2
2

More than 5 years have passed since last update.

Laravel4 の Command でコマンドから別のコマンドを呼ぶ時に値なしオプションを指定する

Last updated at Posted at 2014-12-09

本文では 引数 (arguments) については触れない。

結論から言うと、

$this->call('command:name', ['-o' => null]);

のように指定する。

コマンドとオプションについて

コマンド というのは、

$ php artisan foo --option

という形式でシェル上で実行されるプログラム。
php artisan command:make FooCommand という感じで作れる。
作り方は、 http://laravel.com/docs/4.2/commands に書かれている。

オプションというのは、

$ php artisan foo --option=bar --option=baz

というコマンドがあったとして、

--option=bar--option=baz

の部分のこと。
オプションの値 (value) というのは、上記の barbaz の部分。

このオプションの値には、「値なし」という形式も指定できて、

php artisan foo --option

という書式も実現できる。

オプションの形式には「値なし」も含めて

  • InputOption::VALUE_NONE: 値なし
    • (-o または --option のようにオプション名のみを指定する)
  • InputOption::VALUE_REQUIRED: 必須
  • InputOption::VALUE_OPTIONAL: 任意
  • InputOption::VALUE_IS_ARRAY: 複数

がある。

コマンドプログラム内部から別のコマンドを呼び出す際に、オプションに「値なし」を指定したい

http://laravel.com/docs/4.2/commands#calling-other-commands に書いてあるように、

php artisan command:make FooCommand

で作られたコマンド用クラスには、

$this->call('command:name', array('argument' => 'foo', '--option' => 'bar'));

と書くことで別のコマンドを呼び出せる。

上記はオプションの 値がある から、'--option' => 'bar' みたいに書く。

値なし = InputOption::VALUE_NONE を指定している場合

冒頭に書いたように、 配列のキーにオプションの名前、値に null を指定する。

$this->call('foo:command', ['-o' => null]);

これで、

php artisan command:name -o

したのと同じになる。

(-o について: オプションには省略記法も設定できるのでハイフンが1つのオプションをここでは引き合いに出している)

以上。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2