院生エンジニアのにっき

2007-05-21 Cake1.2 Behavior

[]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」って書かないといけないとはやられました。。

べんべんべんべん 2009/01/17 04:08 私も$actAsと書いてはまっていました。
この記事を見て、間違いに気付きました。
有難うございます。
DBなんかつかってないのに、SQL syntax errorとエラーが
表示させるので、原因がわからず、はまっていました。
助かりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/charly24/20070521/1179732675