2007-05-21 Cake1.2 Behavior
■[CakePHP]CakePHP1.2のBehaviorを使う
CakePHPの1.2系から導入された(1.1系でもディレクトリだけは存在したw)「Behavior」、これでController→Component、View→Helper、Model→Behaviorという住み分けが完成したそうです。
そこでこのBehavior、何が出来るかというと他のComponentやHelperと同じようにMVC各クラスに共通機能を追加するためのモジュールとなっています。
CakePHP1.2ではデフォルトで/libs/model/behaviorsにacl.php、translate.php、tree.phpが入っていて、Modelクラスに追加できるようになっています。
ユーザが作成したBehaviorクラスは/app/model/behaviorに置くのですが、modelクラスでのBehaviorの利用法が他のControllerクラスやViewクラスと異なっていたため若干はまりました。。
ます、ComponentとHelperの使い方は以下の感じです
<?php class HogeController extends AppControlle{ var name = 'Hage'; var $components = array('Fuge'); //FugeComponentを利用 var $helpers = array('Hoge'); //HogeHelperを利用 ・・・ } ?>
となっています。なので慣れた人ならModelクラスでBehaviorを使うためにはこう書こうとするんじゃないでしょうか
<?php class HogeModel extends AppModel{ var $behaviors = array('Fuge'); //FugeBehaviorを利用・・・したい ・・・ } ?>
しかしFugeBehaviorがないと怒られてしまいます。。
- Controller→Components
- View→Helpers
- Model→Behaviors
と思うじゃないですか。
しかし正解は
<?php class HogeModel extends AppModel{ var $actsAs = array('Fuge'); //FugeBehaviorを利用 ・・・ } ?>
$actsAsなんですって。しかも自分の場合は$actsAsという存在をhttp://bakery.cakephp.org/articles/view/soft-delete-behaviorやCakeのコア部で発見していながら$actAsって書いてしまっていてさまよう始末・・・・・
まぁBehaviorは「ふるまい」を定義するので「Act」はまぁまぁ正しいんでしょうが、「Act」が複数形になって「actsAs」って書かないといけないとはやられました。。
- 6 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2006-09,GGLG:ja&q=Scalix+Web+Access インストール
- 5 http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla:ja:official&q=cakephp+ソート&btnG=Google+検索&lr=
- 5 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:en-US:official&hs=ody&q=scalix+centos+&btnG=Google+検索&lr=
- 5 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=scalix+ソース+インストール&num=50
- 4 http://d.hatena.ne.jp/keyword/CakePHP
- 4 http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rls=SNYA,SNYA:2004-33,SNYA:ja&q=cakephp+文字コード
- 3 http://reader.livedoor.com/reader/
- 3 http://search.yahoo.co.jp/search?p=cakephp+文字&ei=UTF-8&fr=top_v2&x=wrt
- 3 http://www.google.co.jp/search?hl=ja&q=Scalix+インストール&btnG=Google+検索&lr=
- 3 http://www.google.co.jp/search?q=scalix+CentOS&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&client=firefox-a