工匠命令不能参与Laravel

时间:2015-02-14 07:50:26

标签: laravel command-line artisan

我为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()方法中获取此参数?

1 个答案:

答案 0 :(得分:2)

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

所以,例如:

protected function getArguments()
{
    return [
        ['example', InputArgument::REQUIRED, 'required argument example'],
        ['example2', InputArgument::OPTIONAL, 'optional argument example', 'some default value']
    ];
}