Laravelには様々なArtisanコマンドがあるが、以下のコマンドで簡単にArtisanコマンドを自作できる。
php artisan make:command (コマンドファイル名)
以下のようなファイルが生成される。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class TestCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:name';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
return 0;
}
}
生成したCommandクラスの解説
$signatureプロパティでコマンド名を指定することができる。
protected $signature = 'test:Hello';
$descriptionプロパティでコマンド名を指定することができる。
protected $description = 'testです';
handleメソッドにコマンドで実行する処理を記述することができる。
public function handle()
{
$this->comment('こんにちは!');
return 0;
}
以下のコマンドで、登録されたArtisanコマンドの一覧が確認できるが先ほど作成したコマンドが登録されていることがわかる。
php artisan list
$signatureプロパティで指定したコマンドを実行すると、handleメソッドが実行される。
php artisan test:hello
自作コマンドから別のArtisanコマンドを実行する
Commandクラスのcallメソッドを実行する。
$this->call('cache:clear');
$this->call('make:controller', ['name' => 'testController']);
コマンドを実行すると、別のArtisanコマンドを呼び出すことができた!!
プロジェクトに応じた自作コマンドを作って作業効率ができそうですね!
参考
コマンドの実装方法が詳しく解説されていておすすめです。
3種類のArtisanコマンドを呼び出す方法を解説されていて、勉強になりました。