Zend Framework 2. Invokables

时间:2014-04-05 22:00:53

标签: controller zend-framework2

                return array(
                'router' => array(
                    'routes' => array(
                        'wall' => array(
                            'type' => 'Zend\Mvc\Router\Http\Segment',
                            'options' => array(
                                'route' => '/api/wall[/:id]',
                                'constraints' => array(
                                    'id' => '\w+'
                                ),
                                'defaults' => array(
                                    'controller' => 'Wall\Controller\Index'
                                ),
                            ),
                        ),
                    ),
                ),
                'controllers' => array(
                    'invokables' => array(
                        'Wall\Controller\Index' => 'Wall\Controller\IndexController',
                    ),
                ),
            );

我正在查看模块Wall的配置,它是Zend Framework 2的JSON restfull API程序的一部分。在/ myprogram / Wall / src / Controller目录中有一个文件IndexController.php,其中的命名空间是声明'命名空间Wall \ Controller'。我的问题是关于' invokables'。 ' =>'的右侧对我来说,如果我理解正确,它会引用控制器类名和命名空间。 ' =>'左侧的内容是什么?我仍然在寻找有关什么是Wall \ Controller \ Index'。

的解释

感谢您发帖...

2 个答案:

答案 0 :(得分:5)

invokables定义了您可以调用的类。您通常会定义可以像这样调用的类:

'invokables' => array(
    'Some\Namespace\Class',
    'Some\Namespace\OtherClass',
),

您还可以通过传递数组来定义别名,就像您给出的示例一样:

'invokables' => array(
    'Wall\Controller\Index' => 'Wall\Controller\IndexController',
),

它将Wall\Controller\Index invokable定义为Wall\Controller\IndexController的别名。

答案 1 :(得分:4)

这真的只是一个key。配置中的数组与模式key => value一起存储。字符串Module\Controller\Foo就是它的名字。您也可以编写module-controller-foo,并在路由配置中使用它。