2

私は過去 2 年間、フラットな php プログラマーでした。MVC今はアーキテクチャに移行したいのでcodeigniter、最初は非常にシンプルに見えるものを使用しています。で開発を行っているときに、いくつかのベスト プラクティスを知りたいですcodeigniter

controller呼ばれるbuildingmodel呼ばれるbuilding_data、および と呼ばれるビューがありbuilding_viewます。いろいろな条件をチェックして建物の一覧を表示したい。フラットPHPで次のことを行っています

  1. データベースから建物のリストを取得する
  2. 特定の基準 A、B、C に基づいて結果を分割する
  3. 結果をsection - Asection -B、および出力section-cとして表示しHTMLます。

今、MVC私は次のことをしています

  1. building_data(モデル)のデータベースの建物のリストを取得します
  2. 結果をコントローラbuilding_data$data配列に格納しますbuilding
  3. 基準A、B、Cに基づいて結果を分割しbuilding_view、出力しHTMLます(ビューで(mysqlクエリを使用せずに)データの条件ベースの分類を行うことはできますか?!My actual question

MVC アーキテクチャ ルールに違反することなく、ここで正しいことを行っていますか?

4

1 に答える 1

7

MVCはデザインパターンです。アーキテクチャではありません。

しかし、ベスト プラクティスや MVCを学びたいのであれば、CodeIgniter は間違った選択です。これは、不適切で時代遅れの慣行 (PHP4 コードの断片、グローバル状態、およびその他の多くの問題) でいっぱいであり、MVC パターンに近いものさえ実装していません。これは、PHP の悪い Rails クローンのようなものです。

ビューはオブジェクトであるべきであり、愚かなテンプレートではありません。コントローラーは、ユーザーが選択した建物をモデル レイヤーに伝える必要があります。ビューは、現在の建物に関する詳細を取得し、それをすべて表現する方法を決定します。

適切な MVC 実装では、ビューはプレゼンテーション ロジックを含むインスタンスです。モデル レイヤーから情報を取得し、応答のレンダリングに使用するテンプレートを選択します。また、HTML 応答が必要な場合でも選択します。ユーザーが実際に JSON または XML 形式のデータを要求した可能性があります。または、そのビューが送信する必要がある唯一の応答が HTTP ヘッダーである場合もあります。

また、Web アプリケーションに従来の MVC パターンを実装できないことにも注意してください (または、少なくとも非常に難しく、ソケットと永続的なモデルを使用する必要があります)。代わりに、MVC にインスパイアされたパターンを使用します。それらの主な違いは、ビューがモデル層から情報を取得する方法です。

  • MVP および MVVM パターンでは、ビューはパッシブであり、コントローラーのような構造 (プレゼンターまたはビューモデル、遠近法) を介してデータを受け取ります。
  • Model2 MVC および HMVC パターンでは、ビューがアクティブになり、モデル レイヤーから直接情報を要求します。

また、第 3 のグループ: Rails ライクな実装です。モデルレイヤーを ActiveRecord ベースの ORM のコレクションに置き換え、ビューがテンプレートであると見なし、「コントローラー」はプレゼンターとビューの責任の組み合わせです。

于 2012-08-09T05:01:46.857 に答える