0

私の Symfony2 プロジェクトには、エンティティを保持する ModelBundle と、その ModelBundle を利用するフロントエンド、バックエンドなどの他のバンドルがあります。

いくつかのエンティティ固有のタスクを実行するモデル固有の関数がいくつかあります。これらはどこに置くのですか?

  1. エンティティ フォルダの隣に別の「モデル」フォルダを作成し、そこにすべての関数を配置しますか?
  2. これらの関数をアクションとして保持する「ModelBundle」にコントローラーを作成する必要がありますか? 私の考えでは、コントローラーは HTTP 要求を受け取り、HTTP 応答を返すため、このコンテキストには当てはまりません。
  3. それらをエンティティクラス自体の中に入れますか? これいいですか?また、ORM を再生成すると上書きされる可能性はありますか?
  4. カスタムリポジトリを探していますか? それらを作成して、「モデル」フォルダーなどに入れることができます。http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-objects.html#custom-repositories

PS: 私は Symfony2 が大好きですが、誰もがフレームワークの定義済みのベスト プラクティス セットを持っているととても嬉しく思います :-)

4

1 に答える 1

1

作成する予定のモデル固有の関数のタイプを知っておくと役立ちます。

機能がデータベースから既にフェッチしたエンティティ用である場合、エンティティ クラスに属します。

機能が特定の基準に基づいてエンティティまたはエンティティのグループを見つけることに関係している場合、それはカスタム リポジトリ クラスに属します。

私は、モデル クラスとエンティティ クラスは別のものであるべきだと考えるのは好きではありません。私見、それは不要なレベルの抽象化です。

この機能はコントローラーに属していないと考えるのは正しいです。

カスタム リポジトリを使用する場合は、"Entity" フォルダーまたは "Repository" フォルダーに保存することをお勧めします。私は個人的に「エンティティ」に私のものを保持していますが、これはDoctrine 1を長い間使用し、「テーブル」クラスに慣れていることの副作用である可能性があります.

これがお役に立てば幸いですが、ご不明な点がございましたら、達成したいことの詳細を投稿してください。

于 2011-09-23T21:28:00.177 に答える