Laravel Lumen从路线

时间:2016-01-04 04:07:56

标签: laravel artisan lumen

在Laravel中,I can do this从路由中调用Artisan命令:

Route::get('/foo', function () {
    $exitCode = Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);

    //
});

但我无法在Lumen框架中找到一种明显的方法。引发的错误是:

Fatal error: Class 'App\Http\Controllers\Artisan' not found

2 个答案:

答案 0 :(得分:10)

这实际上非常简单。确保use Artisan Facade课程在任何需要的地方:

use Illuminate\Support\Facades\Artisan;
...
public function process()
{
    Artisan::call('command');
}

我认为默认情况下框架中没有正常的Laravel外墙,但它们是。

此外,在bootstrap/app.php中,$app->withFacades();必须取消注释,因为@tptcat在评论中提醒我。

答案 1 :(得分:4)

这只是一个扩展,也许不是最好的方式。但是,如果你只是不想使用Facade方式怎么办?那么你可以通过Illuminate\Contracts\Console\Kernel

来做到这一点
// See what Artisan facade provides in `Illuminate\Support\Facades\Artisan`
// and thats: `Illuminate\Contracts\Console\Kernel`
app('Illuminate\Contracts\Console\Kernel')->call('command');

或为Illuminate\Contracts\Console\Kernel

创建别名
// In your service provider or bootstrap/app.php create the alias
$this->app->alias('arti', 'Illuminate\Contracts\Console\Kernel');

// now the 'artisan' alias is available in the container
app('arti')->call('command');