HOME>情報備忘録>MVCとその設計思想

MVCとその設計思想

全部読み切ってませんが、とても素晴らしい内容で、やっぱりというか当然というか自分がモロだめなパターンに当てはまっていることが発覚したので今後のためにメモ。

基本CakePHPの話ですがそれ以外のフレームワークに も共通する話題だと思います。MVCフレームワークを初めて利用する人は 絶対に読んでおいた方がよいと思います。

テーブルとのやりとりにモデルの機能はとても重宝するが、モデルをそのためだけに使っているのであれば、あなたは損をしていることになる。 ちゃんとした MVCではモデルこそが第一級の存在であり、そのように扱われる。コントローラはデータをモデルから取得してビューへと送り出すだけのシンプルな糊として振るまい、アプリケーション内で最も魅力のない部分となる。

モデルをテーブルとのやり取りだけに使ってたのは僕です。

PHP

  1. <?php
  2. class PostsController extends AppController {
  3.  
  4.   public function index() {
  5.     $posts = $this->Post->find("all", array(
  6.       "limit" => 10, "order" => "Post.created DESC"
  7.     ));
  8.     $this->set(compact("posts"));
  9.   }
  10.  
  11.   public function feed() {
  12.     $posts = $this->Post->find("all", array(
  13.       "limit" => 50, "order" => "Post.created DESC"
  14.     ));
  15.     $this->set(compact("posts"));
  16.   }
  17. }
  18. ?>

おぉ・・・まさにこんな感じ。サンプルそっくりで笑えてくる。

モデルに置けるあらゆるものは、そうすべきである(少なくとも「モデルかコントローラか」といった場合には。) アプリケーションの核となるビジネスロジックと連携しないものは (セッション管理、リクエスト・レスポンス処理、セキュリティやアクセス制限に関するもの)、 コントローラに置いたままにすべきである。 それ以外のあらゆるものはモデルに放り込め。

なるほど。モデルはスカスカなことが多かったんですが、 実は主役なんですね。勉強になりました。

投稿日 2009年5月 1日 02:54
カテゴリ bookmark | プログラム
タグ CakePHP | オブジェクト指向 | デザインパターン
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/996

コメント

コメントする
Name
Email Address
URL