利用方法は変わっていないようだけど、フォルダの構成とか変わった。
1.CakePHP1.X系から変わったことから。
・shellファイルの設置場所が変わった
1.X /app/vendors/shells
2.X /app/Console/Command
・ファイル名の命名規則が変わった
例)クラス名が「HogeHogeShell」の場合
1.X hogehoge.php
2.X hogehogeShell.php
shellファイルの場所が変わったのは大きいかな。
2.shellを動かしてみる。
呼び出し方は以前と同じ
phpまでのパス [libまでのパス]/lib/Cake/Console/cake.php シェルのコントローラ名(Shellの部分を除く) アクション名(記載しない場合はmainアクションを見に行く) appまでのパス
こんな感じ
$ php /var/www/lib/Cake/Console/cake.php hogehoge exec /var/www/app/
動作させると以下のようなメッセージが出た後、処理が実行される
Welcome to CakePHP v2.0.5 Console
—————————————————————
App : app
Path: /var/www/app/
—————————————————————
~ここから処理の内容~
基本的な使い方もついでにメモしておく。
3.shellにcontrollerの処理を追加してみる
<?php App::uses('IndexController','Controller'); class HogeHogeShell extends Shell { $controller = null; public function startup() { parent::startup(); $this->controller = new IndexController(); } }
4.shellにcomponentの処理を追加してみる
2系から$this->Components->load(‘コンポーネント名’);でロードできるようになった。
<?php App::uses('IndexController','Controller'); class HogeHogeShell extends Shell { $controller = null; public function startup() { parent::startup(); $this->controller = new IndexController(); $this->fugafuga = $this->Controller->Components->load('Fugafuga'); } }
5.shellにmodelの処理を追加してみる
<?php class HogeHogeShell extends Shell { public $uses = array('Test'); public function startup() { parent::startup(); $result = $this->Test->find('all'); } }