質問: $this->get('service'); ``` serviceのコンストラクタに任意の引数を渡したいです。 ``` service: arguments: クラス1 arguments: 任意の引数 ```
回答: うーん、ちょっとどういうユースケースなのかイマイチ理解出来てないので、間違った事言ってしまったらすいません。 おそらくコントローラから引数を渡したい場合というのは、コントローラが実行されたタイミングで初めて値が決定するのかと思います。 しかしservice.ymlからオブジェクトが生成されるタイミングは、コンテナがビルドされたタイミングで値が決まります。 つまりコントローラ実行前に決まってしまうわけです。 なので、コントローラから値を渡したい場合は、サービス側にsetterを用意する必要があります。 ``` hoge = $hoge; } } ``` しかしこの方法はあまりお勧めできません。 引数として実行するほうがまだいい ================ まだ実行するメソッドの引数として渡すのはありかと思います。 ``` $hoge = '任意の引数'; // serviceの第二引数に$hogeを渡したい $service = $this->get('service'); $service->execute($hoge); ``` 設計を見直してみる ========= Symfony2で何らかの制約によって実装が難しい場合に無理矢理に実装するのは非常に苦痛です。 しかし、大抵の場合は設計が悪い事が多いです。 一度設計や要件を見直してみるのも良いかもしれません。