artisanコマンドの新記法
Laravel 5.1くらいから Command クラスに signature
というプロパティが追加されました。
従来getArgumentsや getOptionsで指定していた複雑な引数、オプションの管理をシンプルに表記できる 独自記法 です。
独自記法ということで若干使用を避けていたのですが、覚えてみると非常に楽だったので、備忘ついでに記載しておきます。
引数の記述
protected $signature = 'email:send {user}';
基本の記述はこちら。従来name
に指定していたコマンドの名前に加えて、{}
で引数のプレイすホルダを追加すると引数の設定になります。
オプション引数
?
をつけると必須でないオプションの引数になります。デフォルト値をセットする際には=
を利用します。
protected $signature = 'email:send {user?}';
protected $signature = 'email:send {user=foo}';
オプションの記述
オプションは{--}
で記述します。デフォルトではオプションはフラグ(true or false)として解釈されます。
protected $signature = 'email:send {--queue}';
値を取る引数
値を取る引数は、末尾に=
をつけて記述します。デフォルト値を続けることも可能です。
protected $signature = 'email:send {--queue=}';
protected $signature = 'email:send {--queue=default}';
long option / short option
|
記号を用いることで、オプションに省略名を用いる事が出来ます。
protected $signature = 'email:send {--Q|queue}';
Description
ヘルプメッセージ向けの説明メッセージは:
記号に続けて記述することが出来ます。
protected $signature = 'email:send
{user : The ID of the user}
{--queue= : Whether the job should be queued}';