Laravel如何创建自定义Artisan命令?(代码示例)
发布时间 - 2025-12-25 00:00:00 点击率:次在 Laravel 中创建自定义 Artisan 命令需运行 php artisan make:command SendNewsletter 生成类,修改 $signature 和 $description 定义命令签名与描述,于 handle() 方法中用 $this->argument() 和 $this->option() 获取参数与选项,并使用 $this->info() 等方法输出提示,返回 0 表示成功。
在 Laravel 中创建自定义 Artisan 命令
非常简单,核心是使用 make:command 命令生成类,然后在 handle() 方法中编写逻辑。
生成命令类
运行以下 Artisan 命令,Laravel 会自动生成一个带命名空间的命令类(位于 app/Console/Commands/):
php artisan make:command SendNewsletter
生成的类默认包含 signature(命令名和参数定义)和 handle()(执行逻辑)两个关键属性/方法。
定义命令签名与描述
在生成的 SendNewsletter.php 中,修改 $signature 和 $description:
protected $signature = 'newsletter:send {--force : 是否强制发送} {email? : 接收者邮箱}';
protected $description = '发送订阅邮件';
-
{email?}表示可选参数(末尾加?) -
{--force}是布尔型选项,运行时用--force启用 - 签名支持更复杂的格式,如
{email : 邮箱地址} {--limit=100 : 最大发送数量}
编写执行逻辑(handle 方法)
在 handle() 中写业务代码,并善用 Artisan 提供的辅助方法:
public function handle()
{
$email = $this->argument('email');
$force = $this->option('force');
if (!$email && !$force) {
$this->error('请提供 email 或使用 --force');
return 1;
}
// 模拟发送
$this->info("正在向 {$email} 发送邮件...");
// Mail::to($email)->send(new NewsletterMail());
$this->line('✅ 邮件已排队发送');
return 0;
}
- 用
$this->argument('xxx')获取参数值 - 用
$this->option('xxx')获取选项值 -
$this->info()、$this->error()、$this->warn()等输出带颜色提示 - 返回
0表示成功,非0表示失败(可用于 shell 脚本判断)
注册并运行命令
新命令默认已自动注册(Laravel 8+ 使用命令自动发现),无需手动添加到 app/Console/Kernel.php 的 $commands 数组。确认注册可用:
php artisan list | grep newsletter
运行命令示例:
php artisan newsletter:send test@example.com php artisan newsletter:send --force php artisan newsletter:send --force --env=production
基本上就这些。不复杂但容易忽略的是:签名语法要写对、参数取值要用对应方法、退出码别忘了设 —— 这些细节决定了命令是否健壮好用。
# php
# laravel
# app
# ai
# 邮箱
# 命名空间
# Error
# 布尔型
# console
# this
# 自定义
# 的是
# 要用
# 布尔
# 可选
# 别忘了
# 好用
# 时用
# 自动生成
# 发送邮件
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高性价比服务器租赁——企业级配置与24小时运维服务
中山网站制作网页,中山新生登记系统登记流程?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何用虚拟主机快速搭建网站?详细步骤解析
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel如何使用Service Container和依赖注入?(代码示例)
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel如何使用Telescope进行调试?(安装和使用教程)
Android自定义控件实现温度旋转按钮效果
如何快速配置高效服务器建站软件?
魔方云NAT建站如何实现端口转发?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在阿里云虚拟服务器快速搭建网站?
JS中对数组元素进行增删改移的方法总结
详解Android——蓝牙技术 带你实现终端间数据传输
详解Android图表 MPAndroidChart折线图
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
微信公众帐号开发教程之图文消息全攻略
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel中的Facade(门面)到底是什么原理
制作电商网页,电商供应链怎么做?
linux top下的 minerd 木马清除方法
高端建站如何打造兼具美学与转化的品牌官网?
制作公司内部网站有哪些,内网如何建网站?
如何快速启动建站代理加盟业务?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何生成URL和重定向?(路由助手函数)
重庆市网站制作公司,重庆招聘网站哪个好?
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
大学网站设计制作软件有哪些,如何将网站制作成自己app?
PythonWeb开发入门教程_Flask快速构建Web应用
手机软键盘弹出时影响布局的解决方法
Python结构化数据采集_字段抽取解析【教程】
在centOS 7安装mysql 5.7的详细教程
Laravel怎么为数据库表字段添加索引以优化查询
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel如何使用Vite进行前端资源打包?(配置示例)

