我正在为一个项目使用zend模块化结构。我有下面的目录结构
application/
modules/
default/
controllers/
IndexController.php
FooController.php
models/
views/
scripts/
index/
foo/
helpers/
filters/
blog/
controllers/
IndexController.php
models/
views/
scripts/
index/
helpers/
filters/
news/
controllers/
IndexController.php
ListController.php
models/
views/
scripts/
index/
list/
helpers/
filters/
我想创建一个公共控制器类,我将在所有模块的控制器中扩展到该类
例如,我不想创建一个像下面这样的类
class My_Common extends Zend_Controller_Action
{
public function init()
{
}
}
在所有模块的控制器中,我想像一样扩展它
class News_IndexController extends My_Common
{
public function init()
{
}
}
我怎样才能做到这一点?我试图在默认控制器中创建它,但它不起作用。
您可以通过在库文件夹中添加my的命名空间来轻松实现这一点。如果你考虑到zend库,文件夹结构会是这样的:
公共文件夹结构//图书馆/zend/myNamespace/控制器/Common.php
然后在您的模块中,只需扩展MyNamespace_Controller_Common。
我的方法是在库目录中添加一个"My"文件夹,然后复制Zends类结构,例如:
创建文件
library/My/Controller/Action.php,类名为:My_Controller_Action
确保在application.ini文件中包括:autoloaderNamespaces.my="my_",其中包括自动加载器的"我的目录"。
然后,您应该能够从任何模块控制器扩展My_Controller_Action。