CakePHPのシェル機能で各種コントローラーやコンポーネントを読み込む

CakePHPのシェル機能の使い方って情報が少ない気がする。
ということでちょっとしたまとめ。

<?php
App::import('Core', 'Controller'); // コントローラーのベースクラス
App::import('Controller', 'App'); // AppController
App::import('Controller', 'UsersController'); // UsersController
App::import('Component', 'TestComp'); // コンポーネント
App::import('Component', 'MyPlugin.PluginComp'); // プラグインのコンポーネント

class SampleShell extends Shell {
    var $uses = array('User'); // モデルは普通にこれでOK

    function startup() {
        $this->Controller = new Controller();
        $this->AppController = new AppController();
        $this->UsersController = new UsersController();
        $this->TestComp = new TestCompComponent();
        $this->PluginComp = new PluginCompComponent();
    }

    function test() {
        // 後は下のようにメンバ変数から各コントローラーやコンポーネントにアクセス可能
        $this->TestComp->test();
        $this->UsersController->getTest();
        // モデルも普通に使えます
        $data = $this->User->find('all');
    }
}
?>