0

我正在为我的包创建一个命令。

我的构造函数是:

public function __construct(\Artisan $artisan)
{
    parent::__construct();

    $this->artisan = $artisan;
}

$artisan当然,受保护的财产是存在的。

在我的服务提供者register()方法中,我尝试了几种注册命令的方法。

第一的:

$this->app['custom.command'] = $this->app->share(function ($app)
{
    return new CustomCommand(new \Artisan);
});
$this->commands('custom.command');

第二:

$this->app['custom.command'] = $this->app->share(function ($app)
{
    return $app->make('CustomCommand');
});
$this->commands('custom.command');

通常,它应该可以工作。但是当我运行命令时,我总是在我的方法中运行时收到Call to undefined method Illuminate\Support\Facades\Artisan::call()错误消息。$this->artisan->call('migrate')fire()

但是,当我写\Artisan::call('migrate')而不是$this->artisan->call('migrate')一切正常时。

有人知道我做错了什么吗?

提前致谢。

4

1 回答 1

1

我认为问题在于您注入了 Artisan 的外观,而不是 Artisan 本身。

尝试

public function __construct(Illuminate\Foundation\Artisan $artisan)

在您的服务提供商中:

return new CustomCommand($app['artisan']);

于 2015-01-08T17:59:04.340 回答