在 Zend Framework 2 中使用配置文件设置 ServiceManager
Setting up ServiceManager with configuration files in Zend Framework 2
我已阅读关于 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 代码而不是真正的工作。
您可以连接 Zend\Config\Reader\Yaml 来解析您的配置,但它们不会或多或少冗长,只是格式不同。如果您更喜欢这种格式,请随意,但是 PHP 数组非常灵活并且对这样的配置很有用。
您通常希望在模块的配置中连接这些(例如,module/Application/config/module。config.php)。
数组语法更短。
return [
'service_manager' => [
'invokables' => [
...
],
],
];
使用 ::class 而不是 class 字符串,它真正清理了代码,并使在整个应用程序中使用 SL 调用它们变得直观。只需在顶部放置一个 'use' 语句,然后 ::class 即可。
如果您正在进入 ZF2,请不要担心配置。这是一个非常直观的事情,虽然一开始连接组件可能有点慢,但一旦你开始使用它,你会发现 ZF2 使非常复杂的事情比其他框架更容易;可能是以让简单的事情变得更冗长为代价的。
参考:http://framework.zend.com/manual/current/en/modules/zend.service-manager.quick-start.html
我已阅读关于 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 代码而不是真正的工作。
您可以连接 Zend\Config\Reader\Yaml 来解析您的配置,但它们不会或多或少冗长,只是格式不同。如果您更喜欢这种格式,请随意,但是 PHP 数组非常灵活并且对这样的配置很有用。
您通常希望在模块的配置中连接这些(例如,module/Application/config/module。config.php)。
数组语法更短。
return [
'service_manager' => [
'invokables' => [
...
],
],
];
使用 ::class 而不是 class 字符串,它真正清理了代码,并使在整个应用程序中使用 SL 调用它们变得直观。只需在顶部放置一个 'use' 语句,然后 ::class 即可。
如果您正在进入 ZF2,请不要担心配置。这是一个非常直观的事情,虽然一开始连接组件可能有点慢,但一旦你开始使用它,你会发现 ZF2 使非常复杂的事情比其他框架更容易;可能是以让简单的事情变得更冗长为代价的。
参考:http://framework.zend.com/manual/current/en/modules/zend.service-manager.quick-start.html