Laravelの自作コマンドで引数を取得する
自作コマンドを作成してみた。
php artisan command:make testFutari --command=test:futari
上記コマンドで生成されたソースにfire()とgetArguments()とgetOptions()の中身を追記した。
<?php use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; class testFutari extends Command { /** * The console command name. * * @var string */ protected $name = 'test:futari'; /** * The console command description. * * @var string */ protected $description = 'Command description.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function fire() { print 'example = ' . $this->argument('example') . "\n"; print 'optional = ' . $this->option('optional') . "\n"; print 'none = ' . $this->option('none') . "\n"; } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return array( array('example', InputArgument::REQUIRED, 'An example argument.'), ); } /** * Get the console command options. * * @return array */ protected function getOptions() { return array( array('optional', '-o', InputOption::VALUE_OPTIONAL, 'An example option.', null), array('none', null, InputOption::VALUE_NONE, 'An example option.', null), ); } }
そしてコマンドを実行したらこんな結果になった。
$ php artisan test:futari aaa -o bbb --none example = aaa optional = bbb none = 1
ちなみにソース上でコマンドを実行する時は以下のように書く。
Artisan::call('test:futari', [ 'example' => 'aaa', '-o' => 'bbb', '--none' => true ]);