そのサービスのメソッドが呼び出されると、Symfonyサービスが開始されている(コンストラクタが実行されている)ことに気づきました。これは、サービスにコンストラクタのみがあり、メソッドがない場合には重要です。例えばsymfonyサービスはメソッド呼び出しの後にのみ開始されます
:この場合
class MyService {
public function __construct($someOtherService) {
$someOtherService->setFoo("bar");
}
}
// And of course put this service in services.yml
app.my_service:
class: AppBundle\...\MyService
arguments: [ app.some_other_service ]
、従ってコンストラクタおよびsetFoo( "バー")と呼ばれていません。どうしてこれなの?このサービスで(ダミー)メソッドを呼び出すことなく、何らかの形でサービスを開始することは可能ですか?
また、app.my_serviceに「lazy:false」を追加しようとしましたが、違いはありません。
私はSymfony 2.8を使用しています。
あなたは何かを間違って解釈しています。コンテナからサービスを取得するとすぐにコンストラクタが呼び出されます。単にservices.ymlでサービスを定義しても、サービスがインスタンス化されるわけではありません。 – Cerad
はい、私は今理解しています。そして私はコンテナからそれを得ることなくサービスをロードしたかったのです。 – BigJ