加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – ZF2 – ServiceManager依赖于控制器

发布时间:2020-12-13 16:47:18 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试将我的beta DI代码转换为ZF2的发布版本. 现在我一开始就摔倒了,似乎没有任何关于向控制器中注入东西的文档让我觉得在控制器中有依赖关系是不正常的? 现在我只是做一个var_dump(‘blah’);退出;只是试着让一些代码运行… 我已经尝试了很多东西,现
我正在尝试将我的beta DI代码转换为ZF2的发布版本.
现在我一开始就摔倒了,似乎没有任何关于向控制器中注入东西的文档让我觉得在控制器中有依赖关系是不正常的?

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

module.config.php

'controllers' => array(
    'invokables' => array(
        'indexController' => 'ApplicationControllerIndexController',)
)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读