загружать другие классы с помощью автозагрузчика Zend - PullRequest
0 голосов
/ 20 марта 2012

Как я могу использовать автозагрузчик для поиска файла класса 'templater', который находится в том же каталоге, что и каталог Zend?

|_ include
      |_Zend
      |_Templater.php
      |_Smarty

|_root directory

Я сохранил папку Zend, папку smarty и другие классы в папке de include вне корневого каталога.

Я наконец-то понял, как Zend может найти свои классы, добавив его местоположение в include_path.

Теперь я застрял с классом templater, который будет использовать smarty.

Как я могу сделать так, чтобы автозагрузчик узнал о классе templater, а затем о классах smarty в папке smarty?

1 Ответ

1 голос
/ 20 марта 2012

Автозагрузчик Zend Framework довольно суетлив относительно того, где хранятся классы и как они называются.

Для автоматической загрузки класс templater должен быть сохранен в include/Templater/Templater.php, и он должен быть назван так: -

class Templater_Templater
{
    //Class stuff
}

Вы бы назвали это в вашей модели или контроллере так: -

$templater = new Templater_Templater();

Однако, прежде чем это сработает, вам нужно добавить следующую строку в файл application.ini: -

autoloadernamespaces[] = "Templater_"

Если templater - это загруженный вами внешний класс, который не соответствует требованиям к именованию, и вы не можете изменить его имя в соответствии с автоматическим загрузчиком, тогда вам нужно будет включить файл там, где это необходимо, хотя он все еще лучше сохранить его в подкаталоге include. Или, как указал Дэвид Вайнрауб , вы можете создать собственный автозагрузчик для этого.

Я предполагаю, что вы знаете, что 'include' не рекомендуемая структура каталогов для Zend Framework .

...