今更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();
いまいち腑に落ちない仕様ですが、まぁ動けば良しとしましょう。