Php 在ZendFramework上设置不同的控制器\u Front

Php 在ZendFramework上设置不同的控制器\u Front,php,zend-framework,zend-controller,Php,Zend Framework,Zend Controller,我确实需要更改Zend_Controller_Front并使用我的_Controller_Front,但我想不出来。。。我已作出以下声明: 在我的前方 /** * Set singleton instance */ public static function setInstance($instance = null) { self::$_instance = $instance; } 在我的引导下 protected functio

我确实需要更改Zend_Controller_Front并使用我的_Controller_Front,但我想不出来。。。我已作出以下声明:

在我的前方

    /**
     * Set singleton instance
     */
    public static function setInstance($instance = null) {
        self::$_instance = $instance;
    }
在我的引导下

protected function _replaceZendController() {
    Busca_Controller_Front::setInstance(Busca_Controller_Front::getInstance());

    return $this;
}

从代码来看,我认为除了使用
Zend\u控制器前端
之外,不可能让
Zend\u应用程序
使用任何东西

运行Zend_应用程序时,会发生以下情况:

  • Zend_应用程序::bootstrap()
    运行
  • 引导过程创建
    Zend_应用程序\u引导\u引导
    ,设置资源加载程序,然后加载
    FrontController
    资源
  • Frontcontroller资源已硬编码为加载
    Zend\u Controller\u Front
    (请参阅
    Zend/Application/resource/Frontcontroller::getFrontController()
您可以更改此行为的唯一方法是注册您自己的资源加载器,该加载器可以拦截
FrontController
资源的加载,该资源将加载您的Front Controller,而不是Zend Front Controller。当然,您必须确保您的前端控制器支持Zend Framework one提供的所有选项


所以问题是,为什么您需要用自己的
Zend\u Controller\u Front
替换?您不能设置适当的选项或创建插件来实现您的目标吗?

有任何错误或注意事项吗?当你这样做时会发生什么?@360FlowMichael如果我抛出一个异常,它会说它加载Zend_Controller_Front而不是Busca_Controller_Front,所以基本上它不工作。什么
get_类(Busca_Controller_Front::getInstance())
返回?“如果我抛出一个异常,它会显示其正在加载Zend\u控制器\u Front”-您是如何得到此消息的?哪里写着Zend_控制器_Front正在加载。也许你的课已经满了。尝试创建自定义属性,然后在应用程序中获取它。问题:为什么需要更改前端控制器?只是好奇。