イントロダクション
アプリケーションで動作させる、追加のカスタムコマンドを構築することも可能です。app/Console/Commands
ディレクトリーにカスタムコマンドを保存してください。しかし、composer.json
で設定し、コマンドがオートロードされる限り、どこにでも好きな場所に置くことができます。
コマンドの構築
クラス生成
新しいコマンドを生成するには、Artisanコマンドのmake:console
を使用し、開発を開始するために役立つ、コマンドのひな形を生成してください。
新コマンドクラスの生成
php artisan make:console FooCommand
上のコマンドは、app/Console/Commands/FooCommand.php
にクラスを生成します。
--command
オプションを付け、コマンドを生成すると、コマンド名を指定することができます。
php artisan make:console AssignUsers --command=users:assign
コマンドの記述
コマンドを生成したら、クラスのname
とdescription
プロパティーを埋めてください。list
スクリーンであなたのコマンドを表示する時に表示されます。
fire
メソッドはコマンドが実行される時に呼び出されます。このメソッドの中に、コマンドロジックを書いてください。
引数とオプション
getArguments
とgetOptions
メソッドでコマンドが受け取る引数とオプションを定義します。両者のメソッドはオプションを配列のリストで記述した、コマンドの配列をリターンします。
arguments
を定義する定義配列は以下のような形式です。
[$name, $mode, $description, $defaultValue]
引数mode
はInputArgument::REQUIRED
かInputArgument::OPTIONAL
のどちらかです。
options
を定義する定義配列は以下のような形式です。
[$name, $shortcut, $mode, $description, $defaultValue]
オプションでは、引数mode
はInputOption:REQUIRED
、InputOption::OPTIONAL
、InputOption::VALUE_IS_ARRAY
、InputOption::VALUE_NONE
のどれかです。
VALUE_IS_ARRAY
モードはコマンド実行時に複数回指定されるスイッチを表します。
InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY
これにより、以下のような指定が可能になります。
php artisan foo --option=bar --option=baz
VALUE_NONE
オプションは「スイッチ」として指定されるオプションを表します。
php artisan foo --option
入力の取り込み
コマンド実行時、アプリケーションが受け取った引数やオプションの値にアクセスする必要があるのは明らかです。これを行うには、argument
とoption
メソッドを使用します。
コマンド引数値の取得
$value = $this->argument('name');
全引数の取得
$arguments = $this->argument();
コマンドオプションの値を習得する
$value = $this->option('name');
全オプションの取得
$options = $this->option();
出力
コンソールに出力するには、info
、comment
、question
、error
メソッドを使います。その名前が表す目的で使用し、それぞれ適当なANSIカラーが表示に使われます。
お知らせをコンソールに出力
$this->info('Display this on the screen');
エラーメッセージをコンソールに出力
$this->error('Something went wrong!');
質問
入力を求めるためにask
とconfirm
メソッドも使用できます。
ユーザーからの入力
$name = $this->ask('What is your name?');
ユーザーからの秘密文字列の入力
$password = $this->secret('What is the password?');
ユーザーへの確認
if ($this->confirm('Do you wish to continue? [yes|no]'))
{
//
}
また、confirm
メソッドにはtrue
かfalse
のデフォルト値が指定できます。
$this->confirm($question, true);
他コマンドの呼び出し
場合により、コマンドの中から他のコマンドを呼び出したい場合もあります。call
メソッドを使ってください。
$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);
コマンド登録
Artisanコマンドの登録
コマンドが完成後、使用するにはArtisanとして登録する必要があります。通常、app/Console/Kernel.php
ファイルで行います。このファイルのcommands
プロパティに、コマンドのリストがあります。自作したコマンドを登録するには、このリストに追加するだけです。
protected $commands = [
'App\Console\Commands\FooCommand'
];
Artisanが起動すると、このプロパティにリストされている全コマンドがサービスコンテナにより依存解決され、Artisanコマンドとして登録されます。