CMS(PHP/MySQL)のサイズが大きくなり、コードのメンテナンスが困難になると、MVCモデルを適用してメンテナンス性を向上させ、トランスペアレント。私はそのテーマについていくつか追いついてきましたが、私はそれをかなり考え出したと思いますが、ビューの部分を除きます。ここで私は今のところ考えているものです。MVCモデルのV部分をCMSに適用すると
index => controllers <=> models controllers => views
メインコントローラ(ルータ)として機能し、URL内のparamsに基づいて、コントローラクラスのインスタンスを作成しますのindex.phpを。コントローラクラスは、データベース内の情報の更新および取得のためのモデルクラスと通信します。その後、コントローラはビュー(テンプレートの形式)が表示され、表示する処理済みデータを受け取るようにします。しかし...
考え方は、すべてのロジックをビューからコントローラに移動することです。少なくともビューから離れて - 太っている/かわいいコントローラ/モデルの議論を防ぐ。しかし、私はそれを見ていても、私はまだ幾分ダイナミックなビューが必要であり、それはまた、ロジックを必要とします。たとえば、ユーザーのレベルと権限(更新、更新/削除など)に基づいて特定のユーザーのための特定のオプションを表示します。だからそれはif/else文やそのようなものにまで下がります。これでいい?もしそうなら、この「シンプルな」論理のどれが「許可されていますか」?私のテイクは、別のテンプレートが意味を持ち始めるまでです(例えば、profile_view
とprofile_edit
)。
もう1つの簡単な例。 1人のユーザーが10個のプロファイルフィールドのうち5個を表示でき、別のユーザーが10/10を表示できるとします。コントローラーを介して10個すべてのフィールドのすべての情報を取得し、それを表示するかどうかをビューで決定する必要がありますか?また、これらの種類の決定をコントローラに移し、5または10フィールドの情報を取得し、渡された情報に基づいてビュー内の使用可能なフィールドのみを表示しますか?多くの状況では、すべてのデータを持ち、その一部を無視するのは簡単です。何が利用可能であるかを知らず、常にそのことを確認する必要はありません。