Rumah > pembangunan bahagian belakang > tutorial php > lumen控制器调用artisan

lumen控制器调用artisan

WBOY
Lepaskan: 2016-06-06 20:12:08
asal
1572 orang telah melayarinya

文档中给的调用artisan方式是
直接在路由里调用

<code>`Route::get('/foo', function () {
    $exitCode = Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);
    //
});`</code>
Salin selepas log masuk
Salin selepas log masuk

这种方式,实际上在lumen里没Artisan。现在安装了一个数据库备份插件,
https://github.com/backup-manager
这个插件可以实现php artisan db:backup
想在controller里面调用备份相应的命令。求指点。

回复内容:

文档中给的调用artisan方式是
直接在路由里调用

<code>`Route::get('/foo', function () {
    $exitCode = Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);
    //
});`</code>
Salin selepas log masuk
Salin selepas log masuk

这种方式,实际上在lumen里没Artisan。现在安装了一个数据库备份插件,
https://github.com/backup-manager
这个插件可以实现php artisan db:backup
想在controller里面调用备份相应的命令。求指点。

自问自答,初学者走的坑,高手不要拍砖。
想要在lumen里调用artisan 就需要找到相应的Facades,而lumen中没有给artisan起别名,进行注册。
所以我们正常是使用不了的。如下laravel/lumen-framework/src/appliation.php

<code>    public function withFacades()
    {
        Facade::setFacadeApplication($this);

        if (! static::$aliasesRegistered) {
            static::$aliasesRegistered = true;

            class_alias('Illuminate\Support\Facades\Auth', 'Auth');
            class_alias('Illuminate\Support\Facades\Cache', 'Cache');
            class_alias('Illuminate\Support\Facades\DB', 'DB');
            class_alias('Illuminate\Support\Facades\Event', 'Event');
            class_alias('Illuminate\Support\Facades\Gate', 'Gate');
            class_alias('Illuminate\Support\Facades\Log', 'Log');
            class_alias('Illuminate\Support\Facades\Queue', 'Queue');
            class_alias('Illuminate\Support\Facades\Schema', 'Schema');
            class_alias('Illuminate\Support\Facades\Validator', 'alidator');
        }
    }</code>
Salin selepas log masuk

这里我们找到Illuminate\Support\Facades这个文件夹,里面是有Artisan.php的把这个像其他一样起别名后
无须use任何东西,Artisan类就可用了。当然,我们不能动框架。所以在你想用artisan命令的地方加头
use Illuminate\Support\Facades\Artisan;
就可以在lumen中调用Artisan->call()方法,在控制器中运行php artisan任意命令了。

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan