「PHPフレームワーク Laravel Webアプリケーション開発」の感想・備忘録10

スポンサーリンク

コンソールアプリケーション

Commandクラスによるコマンド実行

  1. php artisan make:command HogeCommand
    app/Console/Commands/HelloCommandが生成される。
  2. $signatureでコマンド名を定義する。
    protected $signature = 'hoge:printHello';
  3. $descriptionでコマンドの説明文を定義する。
    protected $description = 'Print hello';
    php artisanまたはphp artisan listで表示される。
  4. handleメソッドに処理を記述する。
  5. 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');とする。

コメント