私は Symfony 3 アプリケーションを開発しています。 symfony プロファイラーのログには次のことが示されています:
リーリーただし、これは単純な ORM Bean です:
リーリーこの問題はどのように解決すればよいでしょうか?本当に ORM エンティティを services.yaml
でサービスとして宣言する必要がありますか? 「はい」の場合、何をすべきですか?
更新 実際、私のエンティティはサブディレクトリにあります。質問を変更しました。
私の service.yaml
で次のことを試しました:
...しかし、効果はありません。
Service-auto 登録の下にエンティティをコンストラクター パラメーターとして使用するクラスがありますか?
ここに問題があります。
この関連クラスが本当にサービスなのか、それとも常に自分でインスタンスを作成する単なる通常のオブジェクトなのかを自問する必要があります。
コンテナを介してサービスとして使用しない場合は、2 つのオプションがあります:
次のようなグローバル パターンを通じてこのクラスを除外できます:
リーリーまたは、構成で次のパラメータを設定することもできます:
リーリーこのオプションを使用すると、コンテナーはサービスとして利用できないパラメーターを含むサービス クラスを作成しようとせず、決定的なエラーが発生します。これは sf4 のデフォルト設定です。
このエラーを引き起こす良い例は、コンストラクターでエンティティをペイロードとして受け取るカスタム イベント クラスです:
リーリーこのファイルが特に除外されていない場合、コンテナはそれをサービスとして自動的に登録しようとします。ソリッド ボディが除外されるため、自動配線できません。しかし、3.4 では、この警告をトリガーするフォールバック メカニズムが存在します。 strict_mode がアクティブになると、イベントはサービスとして利用できなくなり、サービスとして使用しようとするとエラーがスローされます。