コンソールアプリケーション
Commandクラスによるコマンド実行
- php artisan make:command HogeCommand
app/Console/Commands/HelloCommandが生成される。 - $signatureでコマンド名を定義する。
protected $signature = 'hoge:printHello';
- $descriptionでコマンドの説明文を定義する。
protected $description = 'Print hello';
php artisanまたはphp artisan listで表示される。 - handleメソッドに処理を記述する。
- php artisan xxx:xxxで実行
php artisan hoge:printHello
コマンドラインへの出力するためのメソッド
親クラスのCommandにメソッドがいくつか用意されている。
- line: スタイルなし
- info: 緑色文字
- comment: 黄色文字
- warn: 黄色文字
- question: 黒色文字に青色背景
- error: 白色文字に赤色背景
他にもask, choice, confirmなどいろいろある。
第2引数で出力レベルの指定が可能。 (コマンド実行時、-vや-vvで出力レベルを指定する)
アプリケーション内からのコマンド実行
php artisan xxx:xxxはコマンドラインからの実行だが、Artisanファサードのcallメソッドを使うとアプリケーション内からコマンドを実行することができる。\Artisan::call('xxx:xxx');
引数ありの場合は、第2引数に配列を渡す。\Artisan::call('xxx:xxx', ['name' => 'hoge']);
※ Artisanファサードを利用しない場合、Illuminate\Contracts\Console\Kernelインスタンスをインジェクションすれば、callメソッドを実行することをできる。
public function index(Kernel $kernel, Request $request)
{
$kernel->call('xxx:xxx');
}
※ Commandクラスから他のコマンドを実行する場合は$this->call('xxx:xxx');
とする。
コメント