【问题标题】:Zend Framework: Loading modules from another directoryZend Framework:从另一个目录加载模块
【发布时间】:2010-06-23 08:03:27
【问题描述】:

大家好,这是我关于 Stack Overflow 的第一个问题。我认为这个网站对我有很大帮助,所以我也试了一下。

我目前正在开发多个需要从公共模块目录继承模块的 Zend Framework 应用程序。使用的文件结构是常规方法(省略实际名称和引用以保护应用程序结构):

/application1
    /application
        /modules
            /module1
            /module2
            /module3
            /...

/application2
    /application

现在我已经尝试手动自动加载 Application2 引导程序中的每个模块,如下所示:

$moduleLoader = new Zend_Application_Module_Autoloader(
    array('namespace' => 'Prefix', 'basePath' => path_to_application1_application_modules_modulename)
);
$autoloader->pushAutoloader($moduleLoader);

这行得通,但正如您可以想象的那样,这将成为一项相当乏味的工作。现在我也尝试在 FrontController 中设置公共模块目录,如下所示:

$frontController = Zend_Controller_Front::getInstance();
$frontController->addModuleDirectory(path_to_application1_application_modules);

但这似乎不能引导任何模块。我是否忘记了一些重要的事情?非常感谢您的帮助!

【问题讨论】:

    标签: php zend-framework module autoload


    【解决方案1】:

    您可以在 config.ini 路径中使用配置 resources.frontController.moduleDirectory = APPLICATION_PATH "/modules",然后使用自动加载器。

    它对我有用,我只是通过更改 config.ini 中 resources.frontController.moduleDirectory 的路径来使用来自另一个应用程序的模块。

    要在您的配置上试用,请在 application2 config.ini 中输入resources.frontController.moduleDirectory = APPLICATION_PATH "/../application1/application/modules"

    乐: 如果你希望你的模块被引导添加在 config.ini resources.modules[] = "" 在 moduleDirectory 的行之后。自己试过了,没有这个,进入随机模块时其他模块不会引导。

    【讨论】:

    • 无论如何我尝试它仍然不能引导我的模块。当我调试以查看是否调用了模块引导程序时,它们不会出现。我还是一头雾水……
    • 嗯,似乎都没有效果。您提到“然后只需使用自动加载器。”你会建议我如何使用它?通过创建一个新的模块自动加载器对象并将其添加到自动加载器?基本上就像我在问题中描述的那样。
    • 哦,我现在有了一些结果。我现在从模块中获得输出!现在只有模型似乎没有加载的问题。我想没有其他方法可以使用 Module Autoloader 对象吗?
    • 此外,似乎仍然没有调度引导程序。他们甚至没有加载。我故意输入了一个解析错误,但它并没有超过它。另一方面,我确实从我的测试控制器获取输出。这越来越奇怪了
    • 现在您必须使用Zend_Autoloader 来为该应用程序注册命名空间(考虑到您的模型具有按照 Zend 约定命名的类;例如:Module_Model_Something)
    【解决方案2】:

    当引导你的模块时,你是作为 Zend_Application_Module_Bootstrap 来做的。这很明显,但该文件也应该在根模块文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多