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と共通なので特に触れていません。)