Php 所有模块引导始终在一个请求上运行

Php 所有模块引导始终在一个请求上运行,php,zend-framework,module,bootstrapping,Php,Zend Framework,Module,Bootstrapping,我有两个模块:admin,default。 每个都有一个引导: class Admin_Bootstrap extends Zend_Application_Module_Bootstrap { function _initSmth() { echo 'admin'; die(); } } 默认值是: class Default_Bootstrap extends Zend_Application_Module_Boots

我有两个模块:admin,default。 每个都有一个引导:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
     function _initSmth()
     {
          echo 'admin';
          die();
     }
}
默认值是:

 class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
         function _initSmth()
         {
              echo 'default';
              die();
         }
    }
如果我运行site.ru或site.ru/admin/它总是返回“admin”。
为什么默认引导与管理引导一起运行?

是的,Zend就是这样工作的。如果在应用程序配置中启用模块资源(尤其是application.ini)

所有模块都在引导时引导。如果要根据请求路由到的模块切换行为,可以使用控制器插件进行计划

考虑到知道哪个模块/控制器/操作的第一个钩子是routeShutdown,但是根据您需要做什么,您可以使用其他钩子

这里有一个例子

Plugin_Test extends Zend_Controller_Plugin_Abstract {

public function routeShutdown (Zend_Controller_Request_Abstract $request){

    switch($request->getModuleName()) {

        case 'default':
        // do something
        break;
        case 'admin':
        // do something else
    }

}

您是否检查过site.ru实际上没有使用管理模块?检查请求对象,看看它首先使用的是什么模块/控制器/操作。是的,我使用了。它默认索引控制器在$this->getRequest()->getModuleName()上返回“default”。管理员索引控制器返回“admin”。
Plugin_Test extends Zend_Controller_Plugin_Abstract {

public function routeShutdown (Zend_Controller_Request_Abstract $request){

    switch($request->getModuleName()) {

        case 'default':
        // do something
        break;
        case 'admin':
        // do something else
    }

}