Php zf2为什么要在模块配置中的invokables数组中添加控制器
我想问的是,为什么要以以下方式添加控制器:Php zf2为什么要在模块配置中的invokables数组中添加控制器,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我想问的是,为什么要以以下方式添加控制器: 'controllers' => array( 'invokables' => array( 'Application\Controller\Index' => 'Application\Controller\IndexController' ), ), 而不是以以下方式: 'controllers' => array( 'Application\Controller\I
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController'
),
),
而不是以以下方式:
'controllers' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController'
),
通过在invokables子项下注册控制器,您可以告诉Zend Framework 它可以通过使用新操作符实例化控制器来调用控制器。这是 实例化控制器的最简单方法。或者,您可以注册 工厂创建控制器实例,在这种情况下,您将注册控制器 在Factorys子键下,从: 注意
我们向应用程序通知我们希望在应用程序中使用的控制器。这是为了防止有人请求ServiceManager知道的任何服务,试图破坏应用程序。dispatcher使用一个特殊的、限定范围的容器,该容器将只拉取作为可调用类或通过工厂专门注册的控制器 您需要将控制器类添加到模块配置中的
invokables
,以让应用程序了解您添加的控制器
这是可能的选择之一。另一个选项包括使用工厂和服务管理器创建控制器
在ZF2中使用工厂和可调用项注册控制器的区别是:
- invokables:它告诉
在需要时实例化类ServiceManager
- 工厂:它类似于
,但当您需要一些额外的配置时,应该使用它可调用文件