MVC モデルでは、コントローラーはパイプラインであり、モデルはプロセッサーです。ただし、多くの場合、コントローラーは異なるテーブルからの異なるコンテンツを必要とします。このように、モデルには、get_name、get_info、get_id など、1 つのクエリだけで完了できる多くの関数が存在します。面倒に感じます。実際には、Controller が使用される場所に Query を作成するのが良いのですが、これは MVC のルールに違反します。
現在のアイデアは、最も使用される関数をモデルに配置し、断片化された関数をコントローラーに残すことです。
ぜひご意見ください〜
迷茫2017-05-16 17:08:54
実際、あなたが言及した問題は、コードに基づいてクエリステートメントを動的に生成するアクティブレコード機能という多くのフレームワークによって解決できます。これは最初にRailsフレームワークで推進され、徐々に他の言語にも実装されました。たとえば
リーリー 実際、フレームワークがアクティブ レコードをサポートしている場合、主キーに基づくこのような単純なクエリのコードをモデルに記述する必要はありません。モデルの基本クラスは、に基づいて適切なクエリ ステートメントにアセンブルされます。呼び出したメソッド名、およびクエリ結果を返します。どの言語を使用しているかはわかりませんが、現在、基本的にすべてのスクリプト言語にアクティブ レコードの実装があり、独自のプロジェクトにこの機能を実装できます。これは、その後の開発にもメリットをもたらします。
すべての開発者が同じレベルであることを保証できないため、コード内で制約できる問題は、いくつかの設計原則を規定するよりも効果的です。
迷茫2017-05-16 17:08:54
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) など、自動的に生成された一連のゲッターとセッターが含まれます。ベース ファイルはプログラマ自身が変更することはできません。スキーマの変更に応じて変更されます。非基底クラスは基底クラスを直接継承しているため、見た目がはるかにすっきりしています