• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WEBアプリのMVCについて質問です。)

WEBアプリのMVCについての質問

このQ&Aのポイント
  • WEBアプリのMVCについて質問です。一般的なフレームワークを用いたMVCについて質問です。
  • モデルとコントローラーの役割について気になります。特に、データの加工処理はどこで行うべきでしょうか?
  • ループ処理についても検討したいです。ビューでのループ処理は作業しにくいものですが、MVCとしてはどうなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

No1です。 >コントローラは完全に、モデルで取得したデータをビューへ橋渡しするためだけに存在するというような意味合いってことでしょうか? 補足へ回答しようとしたら、すでにNo2の方が書いてましたね。 ユーザーのGUI操作に伴って、適宜モデルやビューを呼び出すのがコントローラーです。 ビューから直接モデルを参照した方が良ければすればよい。 あまり、「MVCモデル」にこだわらず、それぞれのフレームワークの枠組みに従って開発すれば良いと思いますよ。フレームワークのルールで開発するとおそらく一番効率がいいわけなので。 Railsだと、Model+View+Controlでなく、Database+Template+Processingと思えば良いのかな。

その他の回答 (3)

  • iioi
  • ベストアンサー率26% (22/84)
回答No.3

FuelPHPでは質問者の書いているような処理はMVCだけではなくてViewModelがありそこでこのような実装をすることができるようになっている。

回答No.2

>>MVCモデルの場合は、ビジネスロジックはModelの中に実装します。 >とありますが、 >コントローラは完全に、モデルで取得したデータをビューへ橋渡しするためだけに >存在するというような意味合いってことでしょうか? コントローラは入力をモデルに引き継ぐのが役割です。 Webであれば,ページ遷移まわりはコントローラの役割になります。 ページ遷移に伴って,入力がくっついて来ます。 ビューの更新は,本来的にはビュー自身の役割です。 ビューがモデルの変更を検知して (e.g. Observer Pattern),更新します。 さらに,ビューはモデルを直接参照します。 ただし,Web MVCではこの更新の仕組みを使うことは無いでしょう。 そもそもモデルの変更,ということがありえない世界なので。 それもあって,コントローラーなりMVCのフレームワークなりが,ビューへ描画要求を出すことになります。 # 大元のMVCは状態を持つ環境で生まれています。HTTPのように状態を持たない環境でMVCをやろうとすると,どこかに歪みが出てきます。 MOVEは望まれなかった子 - the sea of fertility http://ugaya40.net/architecture/dis_mov.html にもあるのですが,元々MVCはPDSによる責務の分離が根本の思想です。 表示に関わることであればP側,つまりVまたはCで処理し,そうでないならばD側,つまりMで処理します。 ちなみに,CにPLを持たせた場合,MVCとは別の名前が付いています。 # MVP (Model - View - Presenter)

1000vicki
質問者

お礼

ご回答ありがとうございます。 > 大元のMVCは状態を持つ環境で生まれています。HTTPのように状態を持たない環境でMVCをやろうとすると,どこかに歪みが出てきます。 なるほど、WEBアプリにおける MVCそのものが後発だったため、本来のMVCとはことなるのですね。 WEBアプリで正しいMVCで設計しようとしても、 もともと無理があるということなのですね。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

Ruby on Rails のようにMVCモデルでないにもかかわらず、Model View Controlという用語を使っているフレームワークがあるため、混乱している人がいるようです。 MVCモデルの場合は、ビジネスロジックはModelの中に実装します。あなたの考えはMVCモデルから外れています。 もちろん、別にMVCモデルに従って設計しなければならないわけではないので、自分の好きなように設計すれば良いかと思いますよ。

1000vicki
質問者

補足

ご回答ありがとうございます。 >MVCモデルの場合は、ビジネスロジックはModelの中に実装します。 とありますが、 コントローラは完全に、モデルで取得したデータをビューへ橋渡しするためだけに 存在するというような意味合いってことでしょうか?