2013-12-01 3 views
0

Я думаю, что это невозможно сделать, если PHP не является языком без гражданства. Но я все равно спрошу ...PHP: Может ли стек __autoload быть постоянным?

Я создал домашнюю структуру MVC. Классы - это все имена. При начальной загрузке я создаю свой собственный класс Autoload. Метод этого класса сканирует зарегистрированные каталоги классов (хранятся в конфигурации приложения) и создает массив имен с полным именем класса для путей. Массив хранится как защищенный член этого класса. Этот массив-член используется реализацией spl_autoload(). Объект Autoloader кэшируется и повторно используется для каждого HTTP-запроса.

Это прекрасно и хорошо. Тем не менее, мне кажется, что каждый раз, когда HTTP-запрос поступает в домен, моя загрузочная процедура должна регистрировать метод автозагрузки в стек __autoload. Я хотел бы зарегистрировать его один раз и оставить его в покое.

+0

Нет. При каждом инициализации приложения вам придется прикреплять автозагрузчик к автозагрузчику. Но вы можете прекратить сканирование каталогов как создание классной карты при самом вызове. Просто сделайте это один раз и выгрузите результат в файл php в виде массива или кешируйте его в APC. –

+0

@ tereško Спасибо за ответ. Да, сканирование каталогов происходит только один раз. –

ответ

0

Я думаю, что ближе всего вы можете добраться до этого opcode caching, где выполняется разбор и машинный язык. Кроме того, вы правы в том, что будучи языком без гражданства означает, что он должен строиться каждый раз. Я никогда не вникал в это сам (так что я не уверен, что это ответит на ваш вопрос), но есть также pre-compiled PHP.

+0

Спасибо за ответ. Когда вы говорите предварительно скомпилированный PHP, вы имеете в виду что-то вроде времени исполнения HipHop Facebook? –

+0

Да. Я никогда не обманывал себя сам, но это единственный другой способ, которым я мог видеть, что это работает. В противном случае PHP, по крайней мере, должен каждый раз перестраивать стек программ. – Machavity

+0

Я думаю, что ты прав. Благодарю. –

Смежные вопросы