MVC モデルでは、コントローラーはパイプラインであり、モデルはプロセッサーです。ただし、多くの場合、コントローラーは異なるテーブルからの異なるコンテンツを必要とします。このように、モデルには、get_name、get_info、get_id など、1 つのクエリだけで完了できる多くの関数が存在します。面倒に感じます。実際には、Controller が使用される場所に Query を作成するのが良いのですが、これは MVC のルールに違反します。
現在のアイデアは、最も使用される関数をモデルに配置し、断片化された関数をコントローラーに残すことです。
ぜひご意見ください〜
細いC、太いM、Cは15行を超えてはなりません
実際、あなたが言及した問題は、コードに基づいてクエリステートメントを動的に生成するアクティブレコード機能という多くのフレームワークによって解決できます。これは最初にRailsフレームワークで推進され、徐々に他の言語にも実装されました。たとえば
リーリー 実際、フレームワークがアクティブ レコードをサポートしている場合、主キーに基づくこのような単純なクエリのコードをモデルに記述する必要はありません。モデルの基本クラスは、に基づいて適切なクエリ ステートメントにアセンブルされます。呼び出したメソッド名、およびクエリ結果を返します。ファウラーのパターンブック、トランザクションスクリプト、テーブルモジュール、ドメインモデルの3つのスタイルを参照できます。
CIがアクティブレコードをどのように実装するかはわかりませんが、あなたが言及した小さな関数は、多くのPHPアクティブレコード実装で使用される魔法のメソッドであるか、コードジェネレーターが自動的に生成するため、自分で記述する必要はありません。
たとえば、アクティブレコードは doctrine で次のように実装されます: フィールド bar1、bar2、bar3 を持つテーブル foo がある場合、doctrine はテーブル スキーマに従って 4 つのファイル (FooTable.class.php、FooTableBase.class) を直接生成します。 php 、 Foo.class.php 、 FooBase.class.php 。 2 つの基本ファイルには、getBar1()、setBar1($param) など、自動的に生成された一連のゲッターとセッターが含まれます。ベース ファイルはプログラマ自身が変更することはできません。スキーマの変更に応じて変更されます。非基底クラスは基底クラスを直接継承しているため、見た目がはるかにすっきりしています
アプリケーションロジックをモデルに組み込みます
レイヤー化をしてみましょう
コントローラーはページレベルの制御ロジックを担当します。。。。。。。。。。。