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 】
相关推荐:
详解jQuery停止动画——stop()方法的使用
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
动图在线制作网站有哪些,滑动动图图集怎么做?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
高端云建站费用究竟需要多少预算?
如何在宝塔面板中创建新站点?
Laravel如何使用Gate和Policy进行授权?(权限控制)
网站制作价目表怎么做,珍爱网婚介费用多少?
JavaScript模板引擎Template.js使用详解
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何在 Pandas 中基于一列条件计算另一列的分组均值
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
JS经典正则表达式笔试题汇总
Laravel如何使用Livewire构建动态组件?(入门代码)
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何实现用户注册和登录?(Auth脚手架指南)
iOS UIView常见属性方法小结
南京网站制作费用,南京远驱官方网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel如何使用Eloquent进行子查询
如何正确下载安装西数主机建站助手?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel模型事件有哪些_Laravel Model Event生命周期详解
怎么用AI帮你为初创公司进行市场定位分析?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
,交易猫的商品怎么发布到网站上去?
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel如何使用模型观察者?(Observer代码示例)
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何快速配置高效服务器建站软件?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel怎么连接多个数据库_Laravel多数据库连接配置
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何快速生成ASP一键建站模板并优化安全性?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?

