自定义Zend_Action_Controller的正确位置

时间:2010-06-30 20:14:16

标签: php zend-framework

ZF文档引用“Subclassing the Action Controller”(页面底部),但不引用标准位置来放置新的Action_Controller类。

Application_Module_Autoloader为一堆东西设置拍子,但从不设置控制器。我想把它放在library/APPNAMESAPCE/Action/Contoller上会起作用。但这似乎有点奇怪,因为每个其他特定于应用程序的文件都存储在application/下。

1 个答案:

答案 0 :(得分:3)

该类可以像任何其他类一样自动加载,因此没有“标准”的地方。所以问题就变成了,你希望它住在哪里?

我在模块化应用程序中通常遵循的惯例是在模块中包含大部分内容,但注册应用程序命名空间并使用“核心”类型类的应用程序/模型。因此,在您的情况下,假设您的应用程序命名空间是Wordpress,您将拥有:

class Wordpress_Controller_Action extends Zend_Controller_Action
{

}

该文件将存在于application / models / Wordpress / Controller / Action.php中。

要完成这项工作,您需要在include路径上使用应用程序/模型,并且您需要使用类似的东西(在引导类中)初始化标准自动加载器:

protected function _initAutoloader()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('Wordpress_');

    return $autoloader;
}

或者您可以在application.ini中设置上述内容。