Artisan是laravel自带的命令行接口:
php artisan list
编写命令
生成命令:
- 可以使用Artisan命令,
php artisan make:command ConsoleTest
执行完这个命令后,会在app/Console/Commands 目录下创建ConsoleTest命令类。会包含默认的属性设置以及所有命令都共有的方法。
- 需要在ConsoleTest填写这个类的signature和description属性。其中的handle方法会在命令执行时被调用。将所有命令逻辑都放在这个方法里面。
- 在编写好命令后需要在该命令可以通过Artisan CLI执行之前 注册这个命令。
如下填写这个类的signature和description属性:
<?php namespace App\Console\Commands; use App\Http\Controllers\SettlementController; use Illuminate\Console\Command; class ConsoleTest extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'console:test'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { //TODO 需要的一些逻辑 } }
闭包命令:
在app/Console/Kernel.php文件的comands方法中,Laravel加载了routes/console.php文件。
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * Register the Closure based commands for the application. * * @return void */ protected function commands() { require base_path('routes/console.php'); } }
注册命令:
- 在命令编写后,需要注册到Artisan才可以使用,需要在app/Console/Kernel.php 文件中完成。
- 在这个文件中的commands属性中,在里面注册命令,只需要将上面ConsoleTest所在路径写上,如下:
/** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ 'App\Console\Commands\ConsoleTest' ];
- 最后在终端里cd到项目根目录下,执行如下命令
php artisan console:test
会去执行上面ConsoleTest 中的handle()方法。