1

私はサービスレイヤーを使用しています。次に、次のようなサービスがたくさんあります。

  • ユーザーサービス
  • 記事サービス
  • コメントサービス
  • AuthorizationService

別のサービスからサービスを使用する必要がある場合があります。

現在、依存性注入に sfServiceContainer を使用しており、一部のサービスに Doctrine 2 エンティティ マネージャーを注入していますが、任意のサービスと EntityManager を取得できるようにコンテナー インスタンスを切り替えて注入することを考えています。

しかし、私は立ち往生していて、それが良い考えかどうかわかりません。

4

1 に答える 1

0

コンテナーがこれを行うためのより良い方法を提供しない場合は、Service Locator を使用してもかまいません。

Ding (http://marcelog.github.com/Ding) のようなコンテナーを使用する場合、サービスは Bean になり、サービス ロケーターを使用する代わりに、これらのサービスに IContainerAware インターフェイスを実装できます。

コンテナーは、これらの Bean が作成されるたびに自分自身を注入し、これらのサービス/Bean 内から直接 $this->getBean('aService') を実行できます。Ding の場合、Doctrine2 統合 (EntityManager の注入を含む) の例さえあります。

于 2011-07-07T20:08:27.460 に答える