0

我为 laravel 5 开发了一个包,我也为这个包创建了一个命令,命令文件是这样的:

 class MyCommand extends Command {

    protected $name = 'package:command';

   public function __construct()
   {
      parent::__construct();
    }

  public function fire()
 {
    $this->info('');$this->info('');$this->info('');

    $this->info('            [ Package ]       ');
    $this->info('               ------------------');
    $this->call(\\some codes here ... );
 }

 protected function getArguments()
 {
    return [];
  }

这就是我在 ServiceProvider 中注册命令的方式

    $this->app['package:command'] = $this->app->share(function()
    {
        return new \MyNameSpace\Package\MyCommand();
    });

该命令package:command工作正常,但是一旦我尝试使用参数运行它,就会出现以下错误 Too many argumnents

问题:我的代码应该在哪里修改,以便我可以将参数传递给命令? 编辑:以及如何在fire()方法中获取此参数?

4

1 回答 1

2

您应该将它们放在getArguments()当前返回空数组的方法中。请参阅此处的文档:对于 5.0对于 4.2

因此,例如:

protected function getArguments()
{
    return [
        ['example', InputArgument::REQUIRED, 'required argument example'],
        ['example2', InputArgument::OPTIONAL, 'optional argument example', 'some default value']
    ];
}
于 2015-02-14T09:03:11.243 回答