2016-06-17 8 views
5

私は、このような何かをDB接続に依存しているクラスを持っているに工場を渡す:symfonyの2サービス

class Test 
{ 
    private $conn; 
    public function __construct(Connection $conn) { 
     $this->conn = $conn; 
    } 
} 

このためサービスは次のようになります。

services: 
     service.test: 
      class: Test 
      arguments: 
      - ["@database_connection"] 

を今すぐ私自身の接続サービス/オブジェクトを渡したいと思います。起動時にConnectionが作成されます。しかし、工場ではなく、Connectionオブジェクトが必要なので、引数として渡すことはできません。

これに最も適切な方法は何ですか?

TestクラスにsetConnectionを追加しようとしましたが、現在の定義とサービスをそのまま維持する方が良いでしょう。

+0

クラスを依存関係として受け入れるように変更できますか? –

+0

私はできましたが、私はクラスがそのまま残っているソリューションにもっと興味があります。ちょうど興味があります – Oli

+0

私は参照してください。私は方法があるかもしれないと思う。工場コードを追加してyamlに登録できますか? –

答えて

6

Symfonyのサービスコンテナでは、実際にはそれに対応するソリューションがあります。

database_connectionサービスは、インスタンスを作成するためにファクトリを使用するように構成する必要があります。つまり、このようなものになるだろう:

services: 
    database_connection: 
     class: Connection 
     factory: [ConnectionFactory, createConnection] 

と工場があまりにもサービスであれば、それは次のようになります。そのことについて

services: 
    database_connection: 
     class: Connection 
     factory: ["@connection_factory", createConnection] 

詳しい情報はhere見つけることができます。

+0

完璧に動作します、ありがとう – Oli

関連する問題