
今更CakePHP1.2を使っている人は少ないと思いますが、一応メモとして残しておきます。
Shellクラスで親クラスを作って、それを継承させた場合、なぜかusesで指定したモデルが登録されていませんでした。
(ちなみにCakePHP2.xで同じことをした場合は特に問題なく普通に使えました)
Google先生でいろいろ調べてみたのですが解決策が見つからず、ソースコードを読もうかどうしようかと思っていましたが、
以下の方法で解決しました。
親クラスでAppControllerをロードして、LoadModelメソッドで読み込み
App::import('Core', 'Controller');
App::import('Controller', 'App');
App::import('Core', 'Model');
App::import('Core', 'View');
class MyShell extends Shell {
var $uses = array('Model1','Model2');
function startup(){
parent::startup();
$this->Controller = new Controller();
$this->AppController = new AppController();
//モデルをロード
foreach($this->uses as $val){
$this->AppController->loadModel($val);
}
}
}
子クラスでは以下のようにAppControllerを付けてModelを読み込みます。
$this->AppController->Model1->find();
いまいち腑に落ちない仕様ですが、まぁ動けば良しとしましょう。

