PHP __ автоматически загружают производительность

У меня есть сценарий, который использует autoload загрузить классы, которые не найдены. Я сознательно не включаю файл (хотя я могу), но я хотел бы, чтобы функция автозагрузки включала необходимые файлы.

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

8
задан icc97 5 April 2015 в 20:55
поделиться

2 ответа

Если вы хотите избежать __autoload, вы можете использовать require_once вместо include.

Удар по производительности при использовании __autoload может быть значительным, особенно потому, что некоторые кэши опкодов не поддерживают его должным образом. Однако, учитывая, что это очень удобно, я бы посоветовал использовать его, если только ваш кэш опкодов не кэширует autoload include.

9
ответ дан 5 December 2019 в 11:21
поделиться

Если вы настроили автозагрузку на загрузку классов и не используете require (и т.д.), то автозагрузка будет вызвана только в случае ссылки на несуществующий класс. Поэтому никогда не нужно проверять class_exists в автозагрузке (она не будет вызвана, если класс существует).

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

6
ответ дан 5 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: