跳转到主要内容

什么是 Artisan

Artisan 是 Laravel 内置的命令行接口(CLI)工具。 它以项目根目录下的 artisan 脚本形式存在,提供了大量提升开发和运维效率的命令。 要查看可用命令列表,请使用 list
若想查看命令用法,前面加 help 即可。
使用 Laravel Sail 时,请以 sail artisan 取代 php artisan 执行。 命令会在 Docker 容器内运行。

Tinker

Laravel Tinker 是一个 REPL 环境,能在命令行中交互式操作整个应用,包括 Eloquent 模型、Job、事件等。
启动后可以直接执行 PHP 代码。
Tinker 会实际修改数据。在生产环境执行时请务必谨慎。 它适合用于本地或 staging 环境的功能确认和调试。

创建自定义命令

生成命令

使用 make:command 生成命令类的骨架。
会生成 app/Console/Commands/ImportProducts.php

命令的基本结构

生成的命令类包含 $signature$descriptionhandle() 三个主要要素。
Laravel 13 也支持使用 PHP 属性来书写。

定义参数与选项

$signature 中可以一并定义命令名、参数与选项。

读取参数与选项

handle() 中通过 argument()option() 获取值。

input() — 类型化访问器

使用 input() 方法可以像 HTTP 请求那样通过类型化访问器读取命令参数或选项。
要按名称直接取值可传入名字(会同时在参数与选项中查找)。
argument() / option() 返回字符串,而 input() 的类型化访问器会转换为合适的类型。适合需要类型安全的日期、数字、Enum 等场景。

与用户交互

输出消息

有专门的方法用于向控制台输出带颜色的文本。

询问用户

可以从用户交互式接收输入。

进度条

在处理大量数据时可以直观展示进度。
若想手动细致控制,可使用如下方式:

实用场景

数据导入命令

以下是一个从 CSV 导入商品数据的实用命令示例。
1

生成命令

2

实现命令

3

运行命令

定期维护命令

以下是一个定期删除过期数据的维护命令示例。

结合调度执行

创建的命令可以在 routes/console.php 中安排调度执行。 详见任务调度

命令测试

可以使用 Laravel 的测试功能来验证 Artisan 命令。
artisan() 可用的断言方法示例:

常用命令汇总

最后修改于 2026年7月18日