什么是 Artisan
Artisan 是 Laravel 内置的命令行界面(CLI)工具。 它以项目根目录下的artisan 脚本形式存在,提供了大量用于提升开发和运维效率的命令。
要查看可用命令列表,使用 list 命令。
help。
如果使用 Laravel Sail,请使用
sail artisan 代替 php artisan。
命令将在 Docker 容器内执行。Tinker
Laravel Tinker 是一个 REPL 环境,可以在命令行中交互式操作 Eloquent 模型、Job、事件等整个应用程序。自定义命令的创建
生成命令
使用make:command 生成命令类的骨架。
app/Console/Commands/ImportProducts.php。
命令的基本结构
生成的命令类包含三个主要要素:$signature、$description 和 handle()。
在 Laravel 13 中还可以使用基于 PHP 属性的写法。
参数和选项的定义
在$signature 中统一定义命令名、参数和选项。
获取参数和选项
在handle() 方法内使用 argument() 和 option() 获取值。
input() — 类型化访问器
使用 input() 方法可以以与 HTTP 请求相同的类型化访问器方式获取命令的参数或选项。
与用户的交互
消息的输出
提供了向控制台输出带颜色消息的方法。向用户提问
可以交互式地从用户接收输入。进度条
在处理大量数据时可以直观地显示进度。实用场景
数据导入命令
从 CSV 文件导入商品数据的实用命令示例。1
生成命令
2
实现命令
3
执行命令
定期维护命令
用于定期删除旧数据等的维护命令示例。与计划任务组合
创建的命令可以通过routes/console.php 进行计划执行。
详情请参阅任务调度。
命令的测试
可以使用 Laravel 的测试功能来验证 Artisan 命令的行为。artisan() 方法可用的断言方法示例:dev 命令
dev Artisan 命令可将本地开发所需的多个进程集中在一个终端窗口中一起启动。默认情况下,会并行运行 PHP 开发服务器、队列 Worker、通过 Pail 的日志监视以及 Vite 的资源编译。
concurrently 的 npm 包管理进程。各进程都会带上标签并区分颜色,从终端输出可以很容易地区分哪个进程。任意一个进程失败时,其他所有进程也会自动停止。
默认执行的进程如下。
vite 进程会自动检测正在使用的 Node 包管理器(npm、pnpm、Yarn、Bun)并使用相应的执行命令。dev 进程的自定义
dev 命令执行的进程可以通过 DevCommands 类自定义。通常在应用程序的 AppServiceProvider 的 boot 方法内注册。register 方法接收命令字符串和可选的进程名。
artisan 方法,它会自动在前面加上 php artisan。
node 方法会在前面加上检测到的包管理器的执行命令(例如 npm run),nodeExec 方法会加上包管理器的 exec 命令(例如 npx)。
blue、purple、pink、orange、green、yellow。也可以向 color 方法传入自定义 hex 颜色。
dev 进程而不实际启动,可以使用 dev:list 命令。
dev 进程的过滤
使用 only 方法可以在执行 dev 命令时仅启动指定的进程。同样也可以通过 except 方法排除特定进程。