CakePHP3のShell
CakePHP Advent Calendar 2014 16日目
Shellの作成
src/Shell/ に作成。
例えば、 AiuraShell.php を下記のような内容で作成する。
デフォルトではAppShellクラスが無い点が、CakePHP2と異なる。
必要なら自分で作る。
上記のAiuraを実行すると下記のようになる。
Taskの作成
src/Shell/Task に作成。
例えば、KanakaTask.phpを下記のような内容で作成する。
Kanakaを実行するために、下記のようにAiuraShell.phpを変更する。
Aiuraを実行すると下記のようになる
コマンドからTaskを実行する
Kanakaタスクのmainメソッドを実行できるようにするため、AiuraShell.phpを下記のように変更する。
CakePHP2と違い、OptionParser::addSubCommand() でサブコマンドとして登録する必要がある。
また、デフォルトで呼ばれるTaskのメソッド名は execute() ではなく main()
実行すると下記のようになる。
ShellについてCakePHP2との違いまとめ
- AppShellではなくShellを継承(必要であれば自分でAppShellを作る)
- コマンドからTaskを実行できるようにするには、OptionParser::addSubcommand()でTaskをサブコマンドとして登録する
- デフォルトで実行されるTaskのメソッドは
execute()ではなくmain()
他にも違いはあるとは思いますが、とりあえず気になったのは上記の3点です。 (Modelの呼び出し方も変わっていますが、それについてはControllerと共通なので特に触れていません。)