foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

CakePHP モデルの読み込みは App::import ではなく ClassRegistry::init で

環境

CakePHP 1.2.3.8166

問題

動的にモデルクラスを読み込みたい。
例えばバリデーションで相関チェックをする場合に、別のモデルを利用したい。

解決方法

ClassRegistry::init を使う。

<?php
$Group = ClassRegistry::init('Group');
$groups = $Group->find('all');
?>

注意

下記のコードでも同様の処理ができるがやってはいけない。
下記のコードでは、データベースの接続先が $default 固定になってしまうため、ユニットテストで問題が出てくる。

<?php
App::import('Group');
$Group = new Group();
$groups = $Group->find('all');
?>