php - ZF2 - ServiceManager 依赖于 Controller

标签 php zend-framework2

我正在尝试将我的 beta DI 代码转换为 ZF2 的发布版本。 现在我一开始就崩溃了,似乎没有任何关于将东西注入(inject) Controller 的文档,这让我认为在 Controller 中有依赖关系是不正常的?

现在我正在执行 var_dump('blah');exit; 只是为了尝试让一些代码运行... 我已经尝试了很多东西,现在我希望它能起作用:

模块.config.php

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

模块.php

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

现在什么都没有发生,这很令人沮丧......我读了一些关于为每个 Controller 创建工厂的东西,但我有 33 个,我发现这非常疯狂和愚蠢......?

我试图注入(inject)的是像 userMapper 这样的东西,用于抓取/保存用户。所以 registerAction 使用 userMapper 在数据库中创建一个用户,当你尝试登录时,它使用 userMapper 检查那里是否有用户等。

最佳答案

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

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

关于php - ZF2 - ServiceManager 依赖于 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413715/

相关文章:

php - 在 ZF2 中,如何注册自定义 Feed Reader 扩展?

php - 如何将新的验证器添加到字段到集合(fieldset)中

php - 突出显示word中的字符,保留大写

php - 我如何在 laravel 的 Controller 中包含 Blade View ?

php - 从 MySQL 按 IP 行获取所有用户名

php - 如何shell脚本将多行文本写入从mysql读取的文件?

php - 通过大量的经纬度搜索和排序

mysql - 使 Zend\Db (zf2) 包含在子句之间

redirect - ZF2 在 Controller 外部使用重定向

php - 如何计算 Zend Framework 2 中的行数