• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【php】MVCの分け方について)

MVCの分け方について

このQ&Aのポイント
  • MVCアーキテクチャを勉強しています。MVCのメリットは作業分担、コードの可読性の他に、使いまわしのしやすさがあるようです。
  • MVCで製作されたWEBページは1対多の分け方が理想的です。例えば、とあるモデルはさまざまなコントローラに使われ、モデルを1箇所修正すれば全コントローラに反映されます。また、とあるコントローラは複数のパターンのVに対応していて、スマホ用デザイン、PC用デザイン、様々なデザインに振り分けることができます。
  • MVCの分け方は、モデルとコントローラの関係の構造を明確にし、可読性と使いまわしのしやすさを考慮する必要があります。適切な分け方をすることで、効率的な開発が可能になります。

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

  • ベストアンサー
  • anyhelp
  • ベストアンサー率43% (79/181)
回答No.1

phpの場合、Mは多くの場合DBとほぼイコールになると思います。VCから見ればデータそのものを取り出すためのデータアクセスオブジェクトやデータ管理オブジェクトに当たります。例えばProductDataManager.phpやUserDAO.phpという感じでDBに関するコードはココ以外には一切書かないという方針で作ります。 一方で、Vはhtml+css+jsとほぼイコールですが、設計思想の違いで色々あります。(1つのhtml+複数のCSS)と考える事もできますし、htmlは1つでJavascriptの振り分けした単なる結果かもしれません。単純に膨大な数のhtmlかもしれませんし、一部を書き込める複数のテンプレートかもしれません。なので画面の実装方法は様々ありますね。 Cは単なるgatewayとして考えて単一と考えた設計の場合は、CはあらゆるVを切り替える仕事をしなければならないと考える事ができます。ページとしてのVも振り分け、さらにプラットフォーム毎のVも振り分けます。ただし、この場合はCにはページを表すパラメータを渡す必要があります。 M-C-(サイト全体のあらゆるV) 一方で、CはVと一対一とさせる設計方法もあります。この例ではページ毎にCを選択的に呼び出す方法です。C1.phpを呼んだ場合は、V1が表示されV2は表示されないのでC1の実装はコンパクトになります。 M-C1-(ログイン用のV1) | C2 | (検索結果のV2) いずれの例でもM上に定義したメソッドのシグネチャーが一切変わらなければ、メソッドの実装をどう変えようが、Mは分離して保守できるメリットがあります。つまりメソッドの中でDBの代わりにメモリー上の値を参照しようと、textファイルであっても、CやVはその変更を一切意識しなくてすむわけです。

yuzuru0024
質問者

お礼

回答有り難うございます。 参考にして設計させて頂きます。