0

如何为所有模块加载命名空间(整个应用程序的全局自动加载)

到目前为止,我需要将其添加到每个模块中:

 public function getAutoloaderConfig()
    {
        return array(
            /* ... */
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    /* ... */
                    'MyNameSpace'        => __DIR__ . '/../../library/MyNameSpace',            
                ),

            ),
        );
    }

我怎样才能实现这个功能application.config.php?(我只想为整个应用程序加载一些基类)

4

3 回答 3

0

要加载您需要的模块,请使用文件 /config/application.config.php 将模块列表添加到模块键下的数组中。

return array(
    // This should be an array of module namespaces used in the application.
    'modules' => array(
        'Application',
        'Pages',
        'ModuleName',
    ),
    // ..... rest of array
) 

函数 getAutoloaderConfig() 和 getConfig() 用于加载模块的配置(模块内部配置)。

http://framework.zend.com/manual/2.0/en/user-guide/modules.html

于 2013-07-01T10:14:43.097 回答
0

在 index.php 中自动加载该路径,即

set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../../library/MyNameSpace');
spl_autoload_register(function ($class) {
if(!class_exists($class)) {
    $class = str_replace('\\', '/', $class) . '.php';
    require_once($class);
}
});
于 2013-07-01T11:10:25.600 回答
0

我认为您不能(或不应该)在application.config.php文件中执行此操作。ZF2 框架中模块背后的全部意义在于将逻辑分离为可重用、独立的代码段。因此,每个模块都维护和管理自己的配置,包括自动加载,独立于主应用程序或其他模块。这些设置通常可以用主目录的.global.php和文件覆盖,但自动加载应该留给每个单独的模块。.local.phpautoload/

如果您尝试包含的模块是您开发的自定义代码,那么您可能想查看它们是否实际上是模块,或者只是属于应用程序模块的代码。

于 2013-07-01T20:53:28.907 回答