簡體   English   中英

在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而不是類字符串,它確實可以清理代碼,並使在整個應用程序中使用SL調用它們變得直觀。 只需在頂部放置“ use”語句,然后:: class即可。

如果您正在使用ZF2,請不要配置。 這是一件很直觀的事情,盡管一開始連接組件可能會比較慢,但是一旦接觸到它,就會發現ZF2使這些非常復雜的事情比其他框架更容易。 可能是以使簡單的事情變得更加冗長為代價的。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM