использование автоматической загрузки php spl отменить регистрацию


Почему существует функция spl_autoload_unregister? Если я зарегистрирую автозагрузчик, в каких случаях я хотел бы отменить его регистрацию? мне кажется излишним.

И еще один вопрос в этой теме: поскольку теперь php 5.5 поставляется со встроенным opcache, а в прошлом многие устанавливали apc - есть ли какая-либо причина использовать автозагрузчик все вместе? поскольку весь код теперь все равно отправится в память - не лучше ли просто создать один файл, который загружает все мои классы php?

Author: Adidi, 2013-11-25

1 answers

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

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

Расширено для комментария

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

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

Что касается вашего opcache, ваше мышление неверно. Допустим, вы включаете все классы и методы, которые используете. Теперь предположим, что у вас есть страница, которая использует только 25 % вашей базы кода. Это означает, что вы загрузили остальные 75% и принудительно кэш-память для его кэширования. Но с какой целью? Opcache работает на основе каждого файла, а не на уровне проекта. Таким образом, вы бы раздували свой код на каждой странице без всякой выгоды, потому что автоматическая загрузка в любом случае включала бы код, который вам был нужен, но динамически.

 2
Author: Machavity, 2013-11-24 23:03:19