質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

0回答

1386閲覧

SymfonyにおけるMVCの書き分けとModel・Controllerの内容について

arumikan

総合スコア7

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

0クリップ

投稿2020/06/12 17:06

編集2020/06/30 16:13

現状

私は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などのようなコントローラーのほうが良いのでしょうか?

長くなりましたがご回答いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問