2012年11月01日
cakephpでのモデル呼び出し方
cakephpでコントローラからモデルを呼び出す場合って、$this->usesに使用するモデル名を配列で定義しなきゃいけないですよね。
結構めんどくさいというか、、、なんというか、、、めっちゃめんどくさいですよね。
じゃあ$this->Hoge->find("all");
とかした際にモデルのオブジェクトが生成されてなければ、自動的に生成すりゃいいんじゃね?ってを思ってしまったわけです。
実際、今やってる仕事ではそんな感じのことしているのでcakephpで出来ないわけが無いと。
ということで、AppControllerを開いてみましょう。
そして、以下のコードを追記してみてください。
<?php
class AppController extends Controller {
public $theme = "";
public function __get($name) {
$reuslt = parent::__get($name);
if (!is_null($reuslt)) {
return null;
}
if ( $this->loadModel($name) ) {
return $this->$name;
}
return null;
}
}
これで、モデルのオブジェクトが無い場合に自動的にロードしてくれるかと思います。
パフォーマンス的なところは全く考慮してないので、仕事で使う場合は十分に注意してください。