【问题标题】:Nested Modules on Zend Framework 2Zend Framework 2 上的嵌套模块
【发布时间】:2013-04-07 03:51:14
【问题描述】:

我们可以在另一个模块中包含多个模块吗?

可能是类似这样的结构:

/module
    /Application
        /module
             /SubApplication1
             /SubApplication2

我正在寻找一个简单的例子或有人知道的文章。我已经用谷歌搜索了参考,但到目前为止似乎还没有探索过 zf2 的这一部分。

【问题讨论】:

  • 有一种方法可以在一个模块中使用多个命名空间,非常简单。看看here,看看你是怎么做到的。要做你愿意做的事,我认为你必须在ModuleManager 上做很多工作。

标签: php zend-framework2 zend-autoloader


【解决方案1】:

在您的模块中很容易拥有多个命名空间。您唯一需要做的就是为 Zend Autoloader(s) 提供配置。对于Zend\Loader\StandardAutoloader,可以在模块中设置配置,看起来像这样:

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                // This is the default namespace most probably the module dir name
                __NAMESPACE__    => __DIR__ . '/src/' . __NAMESPACE__,
                // And this is for your custom namespace within the module
                'SomeNamespace'  => __DIR__ . '/src/' . 'SomeNamespace',
                'OtherNamespace' => __DIR__ . '/src/' . 'OtherNamespace',
            ),
        ),
    );
}

Zend\Loader\ClassMapAutoloader 是相同的概念。您只需要将命名空间与类文件匹配:

// file: ~/autoload_classmap.php
return array(
    'SomeNamespace\Controller\SomeController'    => __DIR__ . '/src/SomeNamespace/Controller/SomeController.php',
    'OtherNamespace\Controller\OtherController'  => __DIR__ . '/src/OtherNamespace/Controller/OtherController.php',
);

注意事项!确保您的子模块命名空间的名称不会与其他模块命名空间冲突。

希望这会有所帮助:)

斯托扬

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2015-01-25
    • 1970-01-01
    相关资源
    最近更新 更多