Вопрос

От php.net:

В PHP 5 в этом больше нет необходимости.Вы можете определить __autoload() функция, которая вызывается автоматически в случае, если вы пытаетесь использовать класс / интерфейс, который еще не был определен.Вызывая эту функцию, скриптовый движок получает последний шанс загрузить класс до того, как PHP завершит работу с ошибкой.

Теперь я хочу знать, является ли плохой практикой использование исключительно __autoload загружать соответствующие классы на динамический сайт?

Способ настройки моего сайта заключается в включении файлов в index.php файл, например http://www.site.com/index.php?p=PAGE-I-WANT-TO-LOAD

Поэтому, если я нахожусь в разделе форумов или блогов моего сайта, я хочу, чтобы были загружены только соответствующие классы и функции, поэтому я использую автозагрузку, но я никогда не включаю файл вручную, должен ли я использовать __autoload в качестве последнего средства или то, что я делаю, прекрасно даже в системе с высоким трафиком?

Это было полезно?

Решение

Плохой?Нет. __autoload() это одно из моих любимых дополнений к PHP 5.Это снимает ответственность (и раздражение) за необходимость вручную включать / требовать файлы классов, необходимые для вашего приложения.Тем не менее, вы, как разработчик, должны убедиться, что загружены только "соответствующие классы".Это легко сделать с помощью структурированной схемы именования и структуры каталогов.В Интернете есть множество примеров того, как правильно использовать __автозагрузку (), выполните поиск в Google, и вы найдете много информации.

Другие советы

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

В PHP 5 > = 5.1.2 большинство проблем со старым __autoload () исчезли благодаря spl_autoload_register () .

  

Теперь я хочу знать, является ли плохой практикой использование только __autoload для загрузки соответствующих классов на динамический сайт?

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

Есть одна важная проблема для рассмотрения. Автозагрузка и Zend Guard не очень хорошо сочетаются друг с другом, потому что Zend Guard имеет тенденцию переименовывать вещи, что будет означать, что соглашение об именах, которое вы решили использовать, скорее всего, не будет одинаковым. Если вы будете использовать Zend Guard (или любой другой обфускатор в этом отношении), вам, скорее всего, придется включать все файлы вручную.

Вот цитата из руководства пользователя Zend Guard:

  

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

Единственная опасность для __autoload () - если вы определили плохую функцию автозагрузки. Как правило, все, что вы собираетесь получить с точки зрения снижения производительности, - это поиск нескольких дисков, так как PHP ищет нужные файлы, содержащие ваши классы. Положительным моментом является избавление от всех этих раздражающих вызовов include () .

Если вы беспокоитесь о производительности на этом уровне, то вы уже должны использовать кэш кода операции, такой как APC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top