test
CakePHP Note
ビヘイビア
UPDATE:2009.01.09
モデルを拡張します。ビヘイビアではモデルでよく使う機能をまとめたり、データの入出力の間で処理を行なうようにbeforeFindやafterSaveなどのコールバックメソッドを実装することができます。組み込みのビヘイビアとしてTranslateBehavior, TreeBehavior, AclBehavior があります。
ビヘイビアを作成する
ビヘイビアはModelBehaviorを継承したクラスを作成し、models/behaviorsディレクトリに保存します。ビヘイビアが使われる時にはsetupメソッドが呼ばれます。setupメソッドにはモデルからモデル自身と追加パラメータが渡されます。
class TreeBehavior extends ModelBehavior {
var $settings = array();
function setup(&$model, $config = array()) {
$this->settings = $config;
}
function myCustomMethod(&$model, $data = array()) {
return array_merge($model->data, $data);
}
function afterFind(&$model, $results, $primary){
//コールバック
$results = array_reverse($results);
return $results;
}
}
ビヘイビアを使う
ビヘイビアを使うには使用するビヘイビア名をモデルの$actsAs属性にセットします。
class Post extends AppModel {
var $actsAs = array('Tree');
function doSomething($childen = null) {
$this->myCustomMethod(array(‘childen’=> $childen));
}
}
ビヘイビアのメソッドを呼ぶ時の引数で$modelを渡していない事に注意して下さい。
ビヘイビアで定義した関数の第1引数(&$model)はフレームワークが処理するので指定する必要がありません。第2引数以降を指定します。
ビヘイビアに初期化のためのsetupメソッドに渡すデータも指定出来ます。
class Post extends AppModel {
var $actsAs = array('Tree'=>array("field_name"=>"parent_name"));
function doSomething($childen = null) {
$this->myCustomMethod(array(‘childen’=> $childen));
}
}
