シリーズ「ZendにおけるMVC(Javaフレームワークとの違い)」の続き
前回までは、
Zendの画面構成の問題から、こうするとうまく行くという画面遷移について、
つまりMVCのVとCの関係について書いてきた。
今回から、モデルの関係について書く。
まずは、なぜ、MVCが必要なのかについて書く。
■モデルの必要性
モデルの必要性については、たとえば
(cake phpの例ではあるが)
CakePHP Modelに関する6つの誤解
http://www.1x1.jp/blog/2008/04/cakephp_model_6misinformation.html
に書かれている。
もし、コントローラーのアクション内で、DBアクセスをやってしまうと、
コントローラーが肥大化してしまう。
コントローラーで1クラスで、アクションメソッドに分けるわけには行かないから、
アクションがいっぱいあるコントローラーを担当してしまうと、部分ごとに分けられず、
開発を丸抱えしてしまう。
そこで、アクション時に実行する内容を、ビジネスロジックとして、
アクションコントローラーのアクションメソッドからわけ、
モデル内に作成したいわけだ
(このときビジネスロジックは開発分担しやすいように1ビジネスロジック1クラスとする)
■モデルの構成
そして、ビジネスロジックでは、処理内容を書き、
データアクセス部分は、DAOが担当することになる。
つまり、モデルは、ビジネスロジックとDAOの2層になる。
これを纏めると、全体的にこんな感じ
VIEW
↓
コントローラー(フロントコントローラ→アクションコントローラー)
↓
モデル(ビジネスロジック→DAO)
■Zendがサポートしていること、してないこと
ZendはDAOの作成をサポートしてくれる。
具体的には、Zend/Db/Table/Abstract.phpというのがあって、
これを継承してDAOを作成する。
一方、モデルの扱いは任意みたいなので、
set_include_pathして、モデルのパスを指定する。
■モデル部分の作り方
したがって、モデル部分の作成方法(案)は、こんなかんじ。
(V,Cは前回までで、できているものとする)
1.index.phpに
set_include_pathして、モデルのパスを指定する。
DBをオープンして、Zend_Db_Table_Abstract::setDefaultAdapterで登録
2.DAOを作成する
Zend/Db/Table/Abstract.phpを継承して作成
3.ビジネスロジックを作成、DAOを呼び出す
4.アクションコントローラーのアクションから、ビジネスロジックを呼び出す
|
|
次回は、具体的なプログラミング方法について記述する。