blogですかい

株式会社Loco Partnersに勤めるエンジニアうちの一人のブログ。仕事、プライベートで学んだことなどを発信し、その内容がたとえ少数でも誰かの役に立ったらなら、それはとっても嬉しいなって

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