2010-02-26 2 views

ответ

0

Автозагрузчик загружает только файлы, необходимые для создания экземпляра запрошенного класса.

+0

Можете ли вы это доказать? – user198729

+0

Я просмотрел его код и не нашел там такой логики. – user198729

+0

Автозагрузчик Symfony работает путем сопоставления имен классов физическим файлам. Для этого не так много логики. – blockhead

3

автозагрузчик работает, сохраняя массив пар ключ-значение, например, что

classname => /full/path/to/class 

В Symfony 1.3/1.4 два файла кэша получить создано. Один для основных классов, созданный sfCoreAutoload, и сохраненный в /cache/project.autoload. Для классов, которые автоматически загружаются из каталога проектов, массив пар значений ключа хранится в /cache/_app_/_env_/config/config_autoload.yml.php. Этот файл создается обработчиком конфигурации sfAutoloadConfigHandler.

Некоторые полезные пункты, чтобы помнить:

  • Не все классы в рамках вашего проекта автоматически загружаются, то Автозагружаемый файлы определяются autoload.yml (в sf_lib_dir/конфигурации/конфигурации). Вы можете создать свой собственный autoload.yml и поместить его в директорию config проекта (или даже конфигурацию приложения, которую я думаю).
  • При запуске в среде dev, если класс не может быть загружен автоматически, symfony перестроит кеш автозагрузки, надеясь найти файл, предполагающий его новый. Это может замедлить работу вашего приложения в некоторых случаях использования, поэтому используйте sfAutoloadAgain :: unregister().