現状
私はSymfonyでwebシステムの開発をしており、良いコーディングを行いたいと考えております。
最近Symfonyの設計について知り、それにそった開発を行いたいと思っているのですが、ModelやControllerに記述する(してよい)内容の違いがよくわからず困っています。
下記の記事や公式ドキュメントを参考にしていろいろと考えたのですが、
MVC-モデルとコントロールの書き分けについて
Symfony初心者がつまづきがちな22個のポイント
不明な点がいくつかありましたので質問させていただきます。
1. Modelに記載すべきことは何なのか
私の中ではModel = Repositoryとの認識で、ビジネスロジックもデータ取得(ファイルやらDBから)も(単一責任原則にならって)ここに書いていくと考えております。
ただ、二つ目のリンク先では
・データを取り出したいなら、Repository
・ビジネスロジックを記述したいなら、サービスを作ってDIコンテナに登録
とありました。
すなわちRepositoryに記載するのはデータ取得処理のみでビジネスロジックはここには書かないというのが正しい(推奨されている)のでしょうか。
2. Controllerに記載してもよいこと
一つ目のリンク先での返信にて
あなたがモデルに追加しようと思うメソッドは既にActive Recordで定義されている可能性があるのでまずそれを調べましょう。
一般的にはデータベースのデータを弄くり回すものやバリデーションなどモデルのデータを利用するものはモデルに書いてそれ以外をコントローラ書けば良い。
とあります。
すなわち、queryBuilderや$repo->getHoge(),$repo->setHoge(0);のようなものはControllerでもよいのでしょうか?
私はループ文が必要になるような処理はrepositoryに上記を利用したメソッドを作り、数行(getするだけだったりsetするだけ)で済むものはControllerでもよいと認識しています。
3. Controllerに関して
ProductControllerという抽象的なコントローラーがあるほうがよいのか、それとも、抽象度を下げて(例えばですが)FoodController・ClothingControllerなどのようなコントローラーのほうが良いのでしょうか?
長くなりましたがご回答いただければ幸いです。
あなたの回答
tips
プレビュー