cakephpでのモデル呼び出し方

November 1, 2012,
tags: cakephp php


このエントリーをはてなブックマークに追加

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;
  }

}

これで、モデルのオブジェクトが無い場合に自動的にロードしてくれるかと思います。
パフォーマンス的なところは全く考慮してないので、仕事で使う場合は十分に注意してください。

comments powered by Disqus