ZF2 ZendSkeleton为什么在默认路由中使用'__NAMESPACE__'键?

时间:2014-05-07 09:27:06

标签: namespaces routes zend-framework2

在ZF2骨架中,路由器配置使用密钥:

'__NAMESPACE__' 

确切地说:

'__NAMESPACE__' => 'Application\Controller',

CF: https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php#l32

我们尝试在我们的模块中使用路由器配置而不使用引号:

__NAMESPACE__ => 'Application\Controller',

但似乎打破了配置。

为什么我们使用引号而不是

 __NAMESPACE__

获得它的价值?

1 个答案:

答案 0 :(得分:0)

因为默认情况下,配置文件没有声明名称空间。配置解析器可以读取字符串

  

'__NAMESPACE__'

并正确确定名称空间。

如果您想在没有引号的情况下使用它,您可以在配置文件中声明:

namespace Application;

并使用__NAMESPACE__而不引用。

这就是为什么你有时会在教程中看到Doctrine config的样本:

    'doctrine'        => array(
    'driver' => array(
        'application_entity' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'paths' => __DIR__ . '/../src/' . __NAMESPACE__ . '/Entity',
        ),
        'orm_default'  => array(
            'drivers' => array(
                __NAMESPACE__ . '\Entity' => 'application_entity',
            )
        )
    )
),