Папки контроллера и новый автозагрузчик в Zend Framework

После введения автозагрузчика я начал портировать существующее приложение ZF. Непосредственной ошибкой было то, что IndexController был расширен BaseController, который теперь не может быть найден, хотя он находится в папке application/controllers с другими контроллерами.

Требует ли парадигма автозагрузчика, чтобы BaseController был переименован в My_BaseController и помещен в папку библиотеки? С другой стороны, так приятно хранить все контроллеры в одной папке с BaseController.


person AlexA    schedule 18.11.2009    source источник
comment
Привет, я думаю, вам нужно назвать контроллер BaseController и класс внутри этого файла как Default_BaseController.   -  person opHASnoNAME    schedule 18.11.2009


Ответы (2)


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

См. http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module для получения информации об автозагрузчике ресурсов/модулей.

Вы можете делать что-то по старинке и просто require_once('BaseController.php');

person smack0007    schedule 18.11.2009
comment
Я буду придерживаться require_once, так как мне это нужно только 1 раз. Но буду иметь в виду, что для того, чтобы иметь какие-либо пользовательские файлы, я должен создать собственный класс автозагрузчика. Спасибо! - person AlexA; 18.11.2009

Я на самом деле не видел, чтобы что-то использовало application/controllers раньше

Как правило, вещи помещались в application/modules/<module>/controllers/, а «универсальные» контроллеры — в модуль default.

Вы можете получить лучший ответ, если приведенное выше неверно, если вы укажете, между какими версиями вы переходите, и как вы пытаетесь вызвать контроллер?

person Mez    schedule 18.11.2009
comment
@Mez: все мои приложения используют макет application/controllers, я никогда ничего не кодировал с помощью модуля, и я думаю, что впервые я получил эту схему каталогов, купив ее с помощью Zend Studio. - person RageZ; 18.11.2009
comment
Переход 1.7.7 и 1.9.1. Так что лучше всего использовать модуль по умолчанию, даже если приложение содержит только 1 модуль? Как правило, это базовое приложение, выросшее из основного обучающего приложения ZF. Код представляет собой класс IndexController, расширяющий My_BaseController, и контроллер индекса просто вызывается из URL-адреса zfapp/index. Я предполагаю, что FrontController с его dispatch() отправляет пользователя в IndexController. Затем возникает ошибка. - person AlexA; 18.11.2009
comment
Создайте новый проект с помощью ZF Tool и создайте каталог application/controllers. И НЕТ каталога модулей. То же самое для автозагрузки: по умолчанию должно быть прямо в приложении. - person opHASnoNAME; 18.11.2009