Laravel 11对Artisan命令进行系统性升级:新增model:show、install:broadcasting等高频直击命令;参数与选项语义更明确,强制类型安全与格式校验;交互式TUI成为官方标准,支持分组导航与动态提示;自定义命令须显式声明参数并改用configure()注册。

从 Laravel 9 到 11,Artisan 命令不只是“多几个选项”,而是围绕开发流、类型安全和交互体验做了系统性升级。真正实用的新指令,往往解决的是老版本里反复写判断、手动校验、查文档才能绕过的痛点。
新增高频开发直击命令
Laravel 11 引入的几条命令,不是锦上添花,而是把原来要手动组合多步操作封装成一键动作:
-
php artisan model:show User:不只输出关系定义,还会生成 ASCII 关系图谱,标出 belongsTo 方向、中间表字段、级联行为(如
onDelete("cascade")),省去翻模型代码和迁移文件对齐逻辑的时间 -
php artisan install:broadcasting:自动检测 Redis 是否已安装、是否配置了
BROADCAST_DRIVER、是否注册了服务提供者,并生成最小可行配置;若缺失依赖,会引导执行composer require predis/predis - php artisan make:invokable(Laravel 10+):专为单动作控制器设计,比如支付回调、Webhook 接收,生成即用,无需再删 resource 方法或手动改构造函数
参数与选项语义更明确
新版本不再容忍模糊表达,但换来的是更少出错、更易调试:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 必需参数未传时,命令直接中止并高亮提示 “Missing required argument: userId”,不再进入
handle()让你靠if (!$this->argument('userId'))自己兜底 -
--force类布尔选项统一返回bool,不会出现旧版中传参后得到'1'或空字符串的问题 -
--env=local这类值选项,自动转为对应类型(字符串、整数、枚举),无需在handle()里手动(int)转换 - 签名中
{userId : The ID of the user}的冒号后空格变为强制要求,格式错误会立刻报SyntaxError,避免 help 文本不渲染
交互式开发入口正式落地
Laravel 11 将 php artisan tui 从第三方工具升格为官方推荐路径,且随 laravel new 默认安装:
- 界面按功能分组(代码生成、数据库、缓存、广播配置等),每项带实时描述
- 选
make:controller后,动态提示是否启用--invokable、--resource或--model,并即时校验名称合法性(拒绝含空格或特殊符号) - 选
install:broadcasting时,若检测到未配置 Redis,会直接给出修复建议和可点击执行的命令
自定义命令注册与参数声明方式变更
这不是“新增命令”,但直接影响所有自定义命令能否正常运行:
- Laravel 10+ 强制要求在
configure()中显式声明参数与选项,handle()中调$this->argument('name')前必须先$this->addArgument('name', InputArgument::REQUIRED),否则报 “The 'xxx' argument does not exist” - 命令注册不再依赖
app/Console/Kernel.php的$commands数组,而由bootstrap/app.php中的->withCommands(__DIR__.'/../app/Console/Commands')控制 -
php artisan make:command生成的模板默认含configure()框架,且继承Illuminate\Console\Command,fire()方法已被完全移除










