定位与用途
Laravel Specialist 是一个面向 Laravel 10+ 应用开发的高级技能(Skill),定位为精通 Eloquent ORM 与现代 PHP 8.2+ 开发的专家角色。它用于构建和配置 Laravel 10+ 应用,覆盖创建 Eloquent 模型与关系、实现 Sanctum 认证、配置 Horizon 等任务,可用于从需求分析到测试验证的完整开发流程。
核心工作流
该技能定义了五步工作流:
- 分析需求:识别模型、关系、API 与队列需求。
- 设计架构:规划数据库结构、服务层与任务队列。
- 实现模型:创建带关系、作用域和类型转换的 Eloquent 模型;运行
php artisan make:model并用php artisan migrate:status验证。 - 构建功能:开发控制器、服务、API 资源与任务;运行
php artisan route:list验证路由。 - 充分测试:编写特性测试与单元测试;在任何步骤视为完成前运行
php artisan test,目标覆盖率超过 85%。
参考文档
技能附带按主题拆分的参考文档,依据上下文加载:
- Eloquent ORM(
references/eloquent.md):涉及模型、关系、作用域、查询优化时加载。 - 路由与 API(
references/routing.md):涉及路由、控制器、中间件、API 资源时加载。 - 队列系统(
references/queues.md):涉及任务、worker、Horizon、失败任务、批处理时加载。 - Livewire(
references/livewire.md):涉及组件、wire:model、动作、实时交互时加载。 - 测试(
references/testing.md):涉及特性测试、工厂、模拟、Pest PHP 时加载。
约束
必须做:
- 使用 PHP 8.2+ 特性(readonly、枚举、类型化属性)
- 为所有方法参数和返回类型添加类型提示
- 正确使用 Eloquent 关系(用预加载避免 N+1)
- 用 API 资源转换数据
- 将长时间运行的任务放入队列
- 编写覆盖充分的测试(覆盖率超过 85%)
- 使用服务容器与依赖注入
- 遵循 PSR-12 编码规范
不得做:
- 使用无保护的原始查询(SQL 注入风险)
- 跳过预加载(导致 N+1 问题)
- 未加密存储敏感数据
- 在控制器中混入业务逻辑
- 硬编码配置值
- 跳过用户输入验证
- 使用已弃用的 Laravel 特性
- 忽略队列失败
代码模板
技能提供可直接作为起点的代码模板,包括:
- Eloquent 模型:演示
declare(strict_types=1)、final class、HasFactory与SoftDeletes、$fillable、$casts(使用 backed enum 和immutable_datetime)、BelongsTo与HasMany关系、本地作用域。 - 迁移:使用匿名类迁移,包含外键约束、级联删除、软删除和时间戳。
- API 资源:使用
JsonResource,通过whenLoaded条件加载关联资源。 - 队列任务:实现
ShouldQueue,设置$tries与$backoff,在failed方法中记录错误而非静默吞掉。 - Pest 特性测试:演示认证用户访问、JSON 路径断言、
Queue::fake()与Queue::assertPushed。
验证检查点
技能建议在每个工作流阶段运行命令确认正确性:
- 迁移后:
php artisan migrate:status,预期所有迁移显示 Ran。 - 路由后:
php artisan route:list --path=api,预期新路由以正确动词出现。 - 任务派发后:
php artisan queue:work --once,预期任务无异常处理。 - 实现完成后:
php artisan test --coverage,预期覆盖率超过 85%、0 失败。 - 提交 PR 前:
./vendor/bin/pint --test,预期 PSR-12 检查通过。
知识范围
资料列出的知识范围包括:Laravel 10+、Eloquent ORM、PHP 8.2+、API 资源、Sanctum/Passport、队列、Horizon、Livewire、Inertia、Octane、Pest/PHPUnit、Redis、广播、事件/监听器、通知、任务调度。
适用场景与限制
该技能适用于需要按现代 Laravel 规范构建、配置和维护 Laravel 10+ 应用的场景,尤其适合强调 Eloquent 关系设计、API 实现、队列处理与测试覆盖的团队工作流。限制方面:资料未提供该技能的价格、收费模式、平台支持范围或具体安装命令;其效果与性能数据暂未提供。