Предположим, у меня есть User_RegistrationController, и я хочу расширить его в следующем модуле:
class Clinic_RegisterController extends User_RegisterController
но у меня есть ошибка PHP для этого:
( ! ) Fatal error: Class 'User_RegisterController' not found /application/modules/clinic/controllers/RegisterController.php on line 4
Есть ли способ расширить контроллер из другого модуля?
Вы можете перевести свой базовый контроллер в отдельный класс библиотеки:
class App_Controller_Action_MyController extends Zend_Controller_Action { // your base controller code here }
Тогда контроллер в модуле foo
может быть пустым:
class Foo_MyController extends App_Controller_Action_MyController { }
в то время как контроллер в bar
модулей может содержать ваши переопределения:
class Bar_MyController extends App_Controller_Action_MyController { // override your members/methods }
Не забудьте добавить App_
в качестве App_
autoloadernamespace
.
Автозагрузчик просто не настроен для поиска контроллеров из других модулей.
Если вы хотите сделать то, что вы делаете, вы можете просто добавить инструкцию require_once
выше вашего определения класса:
require_once APPLICATION_PATH . '/modules/user/controllers/RegisterController.php'; class Clinic_RegisterController extends User_RegisterController { //... }
Зачем вам нужен контроллер из другого модуля для расширения? Это создает зависимость от другого модуля. Если в обоих контроллерах есть общий код, используйте прикладные помощники в прикладном уровне.