私の目的は、data_collector をクラスに追加して、開発者ツールバーに役立つ情報を表示することです。私のサービス:
services:
my_api.auth.login:
class: YO\ApiV1\Services\Auth\Login
arguments:
- requestId
- "@old_sound_rabbit_mq.login_rpc"
- "@service_container"
scope: prototype
新しい呼び出しごとに異なるインスタンスを持つスコープ プロトタイプが必要です。ちなみに、サービス @old_sound_rabbit_mq.login_rpc にも「prototype」というスコープがあります。そして、data_collector を添付したいと思います。これは次の方法で実行できます。
tags:
- { name: data_collector, template: "AcmeDebug:Collector:templatename", id: "your_collector_name" }
しかし、私は例外を得ました:
ScopeCrossingInjectionException: スコープ クロッシング インジェクションが検出されました: 定義 "profiler" は、別のスコープ階層に属するサービス "my_api.auth.login" を参照しています。このサービスは常に利用できるとは限りません。一般に、定義「プロファイラー」をスコープ「プロトタイプ」に移動するか、「コンテナー」を「プロトタイプ」の子スコープとして宣言する方が安全です。他のスコープが常にアクティブであることが確実な場合は、参照を strict=false に設定して、このエラーを取り除くことができます。
どうすればいいのかわからないので、混乱します。プロパティ「strict=false」を設定しようとしましたが、何も起こりません。