これは多かれ少なかれ過去の Stack Overflow の質問のフレームワーク中心のバージョンであり、 MVC アプリケーションのほとんどの入門資料がモデル、ビュー、およびコントローラー間の密結合をどのように提示する傾向があるかについてのものです。たとえば、フィルター処理されたデータをユーザー ビューにプッシュするユーザー コントローラーによって変更されるユーザー テーブルがあります。多くの MVC フレームワークもこのパターンを反映している傾向があるというのが私の印象です。これはすべて問題ありませんが、HTML フォームを使用して単調なリストを作成して表示する以上のことにはなりません。
現在注目されている MVC フレームワークはLithiumです。これは、巧妙な PHP5.3 コーディング手法のケーススタディとして非常に興味深いものです。Lithium にはModel
、個々のテーブルのラッパー オブジェクトを提供し、いくつかの単純なクエリを抽象化するクラスがあります。一方、コントローラー オブジェクトのメソッド呼び出しに URL をルーティングし、それをレンダリングしてテンプレートを表示するという気の利いた規則があります。
しかし、その最中に、テーブル A のデータをテーブル B ~ Z のデータに関連付けるすべての興味深いロジックをどこに配置すればよいか途方にくれています。または、少なくとも、そのような配置場所がわかりません。フレームワークの設計と一致する方法でのロジック。私の理解では、Lithium のModel
抽象化は、行レベルの挿入/更新/削除のボイラープレートを排除する以上のことはなく、コントローラー/ビュー アーキテクチャは主にユーザー インターフェイスに関するものです。Controller
URL 要求からルーティングされた関数呼び出しを受け取る同じクラスに、多くのビジネス ロジックを配置したくありません。
私の本能は、多かれ少なかれ完全にフレームワークの外に存在する独自のコードの束でギャップを埋めることです。それ以上のものを期待するべきかどうかはわかりませんが、他のすべてが Lithium でどれほど厳密に構造化されているかを考えると、何か不満を感じます。大きな枠組み。
ここで何が欠けていますか?このタイプのフレームワークを使用するための推奨されるアーキテクチャまたは哲学はありますか?