OctoberCMSはLaravelやSynfonyがベースなので、それらのフレームワーク同様にコマンドラインから実行できるコマンドを簡単に作成することができます。
これは、定期的に実行したいバッチ処理や簡単な開発ツールを作ったりするのに便利です。
基本的に公式ドキュメント:Console Developmentでよく解説されてますが、簡単に
基本
基本は下記の2ステップだけです。
- スキャフォールディングで雛形作成して、やりたいことを記述。
- Plugin.php に登録。
スキャフォールディングで簡単に雛形が作成できます。
プロジェクトのルードディレクトリで下記を実行します。
php artisan create:command <author>.<plugin名> <コマンドクラス名>
例
php artisan create:command Pikanji.Utility MyCommand
この例で作成されるのは、plugin/pikanji/utility/console
ディレクトリにMyCommandクラスだけです。間違ったら、削除してやり直すだけです。
この作成されたクラスでは utility:mycommand
という既に実行可能なコマンドが実装されています。1クラスで1コマンドの実装になります。
次に、作成したコマンドをプラグインに登録します。
対象のプラグインのPlugin.phpの register
メソッドをオーバーライドしてコマンドを登録します。ベースクラス \System\Classes\PluginBase
の register
メソッドは空なのでメソッドを実装するだけでOKです。
登録は下記のようになります。
$this->registerConsoleCommand('<plugin名>.<command>', '<コマンドクラス(ネームスペース込み)>');
例
public function register()
{
$this->registerConsoleCommand('utility.mycommand', 'Pikanji\Utility\Console\MyCommand');
}
これで、プロジェクトのルードディレクトリで下記を実行すると"Hello world!"と表示されます。
php artisan utility:mycommand
実行したい内容は handle
メソッド(OctoberCMSビルド419以前ではfire
メソッド)に記述していきます。
コンソール出力する
出力された雛形にすでに記述されていますが、コンソール出力は下記のようにできます。
$this->output->writeln('Hello world!');
コンソール出力の色を変える
ここらへんもOctoberCMSと言うよりLaravelの機能ですが、info
, comment
, error
などといったメソッドでコンソール上での色を変えて出力することもできます。
$this->info('Display this on the screen');
$this->error('Something went wrong!');
また、入力を促したり、ユーザに確認を求めたりも簡単にできます。
こちらも公式ドキュメントにさらっと説明されています。