ThinkPHP命令行工具支持快速创建自定义命令,通过php think make:command SendEmail生成命令类,配置configure()设置名称、描述及参数,在execute()中编写业务逻辑,运行php think email:send执行。

ThinkPHP 的命令行工具(Console)支持快速创建自定义命令,用于执行定时任务、数据迁移、批量处理等后台操作。核心是通过 php think make:command 命令生成命令类,并在其中编写业务逻辑。
生成自定义命令类
在项目根目录下运行以下命令,会自动生成一个带命名空间的命令类文件(如 app/command/SendEmail.php):
php think make:command SendEmail- 命令名建议使用大驼峰格式(如
ClearCache),对应生成的类名即为该名称 - 生成后,命令会自动注册到框架中,无需手动配置
定义命令信息与参数
打开生成的命令类,在 configure() 方法中设置命令名称、描述和可选参数:
- 调用
$this->setName('email:send')指定终端调用名(支持冒号分隔的命名空间风格) - 用
$this->setDescription('发送批量邮件')添加帮助说明 - 通过
$this->addArgument('user_id', InputArgument::OPTIONAL, '用户ID')添加位置参数 - 通过
$this->addOption('limit', 'l', InputOption::VALUE_REQUIRED, '限制发送数量', 10)添加选项参数
编写执行逻辑
在 execute() 方法中编写实际业务代码,可通过 $input 获取参数,$output 输出结果:
立即学习“PHP免费学习笔记(深入)”;
- 获取参数:
$userId = $input->getArgument('user_id');,$limit = $input->getOption('limit'); - 输出信息:
$output->writeln('开始发送邮件...');,$output->writeln('<info>完成!</info>'); - 可直接调用模型、服务类或 Db 类,例如:
UserModel::where('status', 1)->limit($limit)->select();
运行与调试命令
保存后即可在终端中执行,支持完整帮助提示:
- 运行命令:
php think email:send 123 --limit=5 - 查看帮助:
php think email:send -h或php think list查看所有可用命令 - 调试时可在命令中加入
var_dump()或日志记录,推荐使用think\Log::write()记录执行过程



















