私のsymfony2アプリケーションの構造は次のとおりです。依存性注入とモデルエンティティ - 正しい方法ですか?
さまざまな外部ソースからデータを取得し、それをエンティティオブジェクトとして表すサービスdata_provider
があります。
一部のオブジェクトにはリレーションがあります。現在、私は必要に応じてコントローラやヘルパーサービスの関係をロードしています。
非常に便利ではありませんが、ときどき私のエンティティojbectとの関係を得たいと思っています。これを行うには、data_provider
サービスにアクセスする必要があります。
doctrine遅延ロードのようなものを実装したいのですが、これを行う正しい方法は何ですか?
いくつかの明白なソリューション - すべてのエンティティのinstacneで、またはいくつかの静的プロパティにdata_provider
を注入する、またはサービスの一部の静的メソッドを作るために、またはevenetディスパッチャを使用するが、私はそれが正しい方法
ドクトリン2は、エンティティのメタデータへのアクセスを持っており、遅延ロードのようなもののために基本的に責任があるObjectManagerInterfaceを持っています。標準のDoctrine EntityManagerは、このインターフェイスを実装して、すべての魔法を実行します。私は、このインタフェースを実装するためにdata_providerを調整できるかもしれないと考えています。これはDoctrineの多くの機能にアクセスできるようにします。決してそれを試したことがないので、私はこれを行う方法について何か助けをすることはできません。しかし、それが大きなプロジェクトであれば、Doctrineの勇気を掘り起こす価値があるかもしれません。 – Cerad
検索の指示をありがとうございます。 :) https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Persistence/PersistentObject.php このインターフェイスは「ObjectManagerAwareInterface」と呼ばれます。 ObjectManagerのインスタンスは、ObjectManagerの初期化中に基本オブジェクトクラスのprivate staticプロパティに設定されているようです。 – user2554865