Поделиться контроллерами модулей zend для использования в другом модуле

Предположим, у меня есть 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 

Есть ли способ расширить контроллер из другого модуля?

Solutions Collecting From Web of "Поделиться контроллерами модулей zend для использования в другом модуле"

Вы можете перевести свой базовый контроллер в отдельный класс библиотеки:

 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 { //... } 

Зачем вам нужен контроллер из другого модуля для расширения? Это создает зависимость от другого модуля. Если в обоих контроллерах есть общий код, используйте прикладные помощники в прикладном уровне.