php – ZF2 – ServiceManager依赖于控制器

我正在尝试将我的beta DI代码转换为ZF2的发布版本.
现在我一开始就摔倒了,似乎没有任何关于向控制器中注入东西的文档让我觉得在控制器中有依赖关系是不正常的?

现在我只是做一个var_dump(‘blah’);退出;只是试着让一些代码运行…
我已经尝试了很多东西,现在我希望这可以工作:

module.config.PHP

'controllers' => array(
    'invokables' => array(
        'indexController' => 'Application\Controller\IndexController',)
)

Module.PHP

public function getControllerConfig() {
    return array(
        'factories' => array(
            'indexController'    => function(ControllerManager $cm) {
                var_dump('blah');exit;
            },),);
}

现在没有任何事情发生,而且非常令人沮丧……我读到了关于为每个控制器创建工厂的一些内容,但我有33个,我发现这非常疯狂和愚蠢…?

我想要注入的东西就像用户抓取/保存用户一样.因此registeraction使用userMapper在数据库中创建用户,当您尝试登录时,使用userMapper检查是否有用户等.

解决方法

这里的问题是’indexController’被定义为可调用和工厂.我认为它首先检查invokable,所以当它找到它正在寻找的东西时,它永远不会尝试在工厂中运行代码.只需删除’invokables’数组中的条目即可.

我刚刚写了一篇关于这个主题文章.您可以使用闭包来代替为每个控制器创建单独的工厂类.如果依赖项是可调用的,或者使用options数组轻松配置,则更容易,您只需要一个列出可以注入的类的数组.查看http://zendblog.shinymayhem.com/2013/09/using-servicemanager-as-inversion-of.html

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...