0

我已经阅读了关于 ServiceManager 的 ZF 文档并认为配置(即使在“config”php 文件中)就像

public function getServiceConfig()
  {
    return array(
      'invokables' => array(
        'my-foo' => 'MyModule\Foo\Bar',
      ),
    );
  }

很长很冗长。而且,如果我有很多依赖项,我想为此任务使用某种自动代码生成。

在 Symfony 中,我可以像这样编写 YAML 配置:

parameters:
    mailer.transport: sendmail

services:
    mailer:
        class:     Mailer
        arguments: ["%mailer.transport%"]
    newsletter_manager:
        class:     NewsletterManager
        calls:
            - [setMailer, ["@mailer"]]

它由 Symfony 自动编译为 PHP 代码。是否有一些解决方案可以为 ZF2 做类似的工作?我不认为每个人都编写 DI 代码而不是实际工作。

4

2 回答 2

1

您可以连接 Zend\Config\Reader\Yaml 来解析您的配置,但它们不会或多或少冗长,只是格式不同。如果您更喜欢这种格式,请随意,但 PHP 数组非常灵活,对于像这样的配置非常有用。

于 2015-05-05T16:39:25.867 回答
0

您通常希望在模块的配置中连接这些(例如,module/Application/config/module.config.php)。

数组语法更短。

 return [
     'service_manager' => [
          'invokables' => [
               ...
           ],
      ],
 ];

使用 ::class 而不是类字符串,它确实可以清理代码,并且可以直观地在整个应用程序中使用 SL 调用它们。只需在顶部放一个“使用”语句,然后 ::class 就可以了。

如果您进入 ZF2,请不要担心配置。这是一个非常直观的事情,虽然一开始连接组件可能会慢一点,但一旦你开始使用它,你会发现 ZF2 比其他框架更容易处理非常复杂的事情;可能是以使简单的事情变得更冗长为代价的。

参考: http: //framework.zend.com/manual/current/en/modules/zend.service-manager.quick-start.html

于 2015-05-06T04:34:42.133 回答