5

通常、Symfony2 アプリケーションにはエンティティのコレクションがあります。DoctrineEntityManagerは、これらのエンティティを取得して永続化するために一般的に使用されます。

エンティティは、アプリケーション全体の複数の場所で使用されます。多くのエンティティ、およびエンティティごとに、特定のエンティティの処理と、サービスでのフェッチ/永続化をまとめることは理にかなっています。

たとえば、UserエンティティにはUserServicewithfetchUser($user_id)およびpersistUser(User $user)メソッド (または単にfetch()and persist() メソッドが存在する場合があります。これは単なる例です)。

アプリケーションは、エンティティのフェッチと永続化のために、多くのエンティティ指向サービスを使用することになります。このようなサービスは、インターフェースが似ていますが、処理されるエンティティのタイプが異なります。

アプリケーションに多数のエンティティ指向サービスを含めることができるというのは、よくある状況のようです。したがって、そのようなサービスの命名と設計の問題は一般的な問題です。

たとえば、新しいアプリケーションで baseEntityServiceと childUserServiceの作成が必要になると、そのような側面を処理する手段のようWidgetServiceProductServiceクラスが反復的に感じられ、解決された問題になるはずです。

  • このようなエンティティ管理関連サービスを Symfony アプリケーションに導入するためのベスト プラクティスはありますか?

    これは、おそらくよく踏まれた設計パターンに従って、解決されるべき問題のように感じます.

  • 従うことをお勧めする命名規則はありますか?

    私は、さまざまなアプリケーションで、「UserManager」と「UserService」の両方がサービス名として選択されていることを確認しました。優勢な慣習はありますか?

4

1 に答える 1

1

命名に関しては、私が知っているような決まりはありませんが、Doctrine\ORM\EntityManagerエンティティを管理するクラスがあるので、Managerの代わりに使用しServiceます。

ここで、エンティティ管理サービスについて話します。これほど多くのサービスが本当に必要なのでしょうか? メソッドがユーザーを永続化するだけの場合UserService::persistUser()、なぜデフォルトではなくカスタム サービスを使用しているのEntityManagerでしょうか。

また、リポジトリと永続化メソッドをすべて同じクラスにまとめるべきではありません。エンティティのカスタム リポジトリを使用する方が簡単ではありませんか?

于 2012-07-17T18:49:08.600 に答える