|
スポンサード リンク
スポンサード リンク
Tag: CakePHP
CakePHPのモデルをエンティティとして扱う
ここでのエンティティとは、モデルで定義されたデータを保持し、そのモデルの振る舞いを持つオブジェクト(実体)のことです。 例えば、商品モデルに金額プロパティがあるとします。 Class Item extends AppModel { var $name = 'Item'; function taxOnPrice() { return floor($this->price * 1.05); } } しかし、DBから取得した値は、Itemオブジェクトのpriceには格納されていません。 AppController
AppControllerにエンティティを生成するメソッドを用意します。 class AppController extends CommonsController { // エンティティを生成する function createEntity($name, $values = array()) { $model =& new $name(); $model->setEntityValues($values); return $model; } } AppModel
AppModelでモデルクラスをエンティティとして扱うためのメソッドを用意します。 class AppModel extends Model { // プロパティの値を格納するための変数 var $_entityValues = array(); // プロパティの値を取得 function g($name) { return $this->_entityValues[$name]; } // プロパティに値をセット function s($name, $value) { $this->_entityValues[$name] = $value; } // 連想配列をプロパティの値として保持する function setEntityValues($a = array()) { $this->_entityValues = $a[$this->name]; } // プロパティの値を連想配列で返します。 function getEntityValues() { return $this->_entityValues; } } コントローラ側の処理
Itemを取得するitems_controller.phpを下記のように実装します。 class ItemsController extends AppController { var $name = 'Items'; function index($id) { $entity = $this->createEntity('Item', $this->Item->read(null, $id)); $this->set('item', $entity); } }
ビューでエンティティにアクセスする
まとめ
これで、少しだけですが、CakePHPが使いやすくなったと思います。 関連ページ
コメント
スポンサード リンク |