Laravel通过Artisan创建自定义命令,使用php artisan make:command SendEmails生成命令类,位于app/Console/Commands目录;在Kernel.php的$commands数组中注册后,可通过php artisan send:emails运行;通过$signature定义参数(如{name}、{name?})和选项(如{--queue}),在handle()中用argument()和option()获取输入,并可用info()、error()输出信息,还可通过schedule()设置定时执行,适用于封装脚本、数据处理等后台任务。
在 Laravel 框架中,自定义命令是通过 Artisan 提供的强大功能实现的。Artisan 是 Laravel 自带的命令行工具,允许开发者创建、运行和管理各种命令,比如数据库迁移、队列处理、定时任务等。你也可以轻松创建自己的命令来执行特定的业务逻辑。
Laravel 使用 artisan make:command 命令来自动生成一个命令类:
php artisan make:command SendEmails
SendEmails.php
文件生成的类包含两个核心属性和方法:
php artisan list 显示新创建的命令需要注册到 Laravel 的 Artisan 控制台。打开 app/Console/Kernel.php 文件,在 $commands 数组中添加你的命令类:
protected $commands = [
\App\Console\Commands\SendEmails::class,
];
注册后,就可以在终端使用该命令了。
通过 $signature 属性可以灵活设置命令接收的参数和选项:
inspire {name} —— 执行时必须提供 name 值inspire {name?} —— name 可有可无inspire {name=John}
inspire {--queue} 或 {--queue=}
$this->argument('name') 或 $this->option('queue')
注册完成后,可通过以下方式运行:
php artisan list 查看所有可用命令php artisan send:emails 执行你的命令$this->info('Message')、$this->error()、$this->line() 输出信息如果命令需要频繁执行,还可以在 Kernel.php 的 schedule() 方法中定义定时任务:
$schedule->command('send:emails')->daily();
基本上就这些。Laravel 的命令机制简洁实用,适合封装脚本、定时任务、数据处理等后台操作。