文檔中給的調用artisan方式是
直接在路由裡調用
`Route::get('/foo', function () { $exitCode = Artisan::call('email:send', [ 'user' => 1, '--queue' => 'default' ]); //});`
這種方式,實際上在lumen裡沒Artisan。現在安裝了一個Database Backup外掛程式,
https://github.com/backup-manager
這個外掛程式可以實現php artisan db:backup
想在controller裡面調用備份相應的命令。求指點。
回複內容:
文檔中給的調用artisan方式是
直接在路由裡調用
`Route::get('/foo', function () { $exitCode = Artisan::call('email:send', [ 'user' => 1, '--queue' => 'default' ]); //});`
這種方式,實際上在lumen裡沒Artisan。現在安裝了一個Database Backup外掛程式,
https://github.com/backup-manager
這個外掛程式可以實現php artisan db:backup
想在controller裡面調用備份相應的命令。求指點。
自問自答,初學者走的坑,高手不要拍磚。
想要在lumen裡調用artisan 就需要找到相應的Facades,而lumen中沒有給artisan起別名,進行註冊。
所以我們正常是使用不了的。如下laravel/lumen-framework/src/appliation.php
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'); } }
這裡我們找到Illuminate\Support\Facades這個檔案夾,裡面是有Artisan.php的把這個像其他一樣起別名後
無須use任何東西,Artisan類就可用了。當然,我們不能動架構。所以在你想用artisan命令的地方加頭
use Illuminate\Support\Facades\Artisan;
就可以在lumen中調用Artisan->call()方法,在控制器中運行php artisan任意命令了。