假设我有一个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_
作为autoloadernamespace
。
自动加载机只是没有设置为从其他模块中查找控制器。
如果你想做你正在做的事情,你可以在你的类定义上面添加一个require_once
语句:
require_once APPLICATION_PATH . '/modules/user/controllers/RegisterController.php';
class Clinic_RegisterController extends User_RegisterController
{
//...
}
为什么需要扩展另一个模块的控制器?这会创建对另一个模块的依赖关系。如果两个控制器中都有通用代码,请使用应用程序层中的操作帮助程序。