核心用法
本技能为 Laravel 与 PHP 8.4 开发提供工程化最佳实践,涵盖代码规范、现代语法特性、架构设计与生产运维四大维度。
代码规范层面:强制 declare(strict_types=1),推行 Happy Path Last 编码风格(先处理错误/守卫,成功逻辑置于末尾),禁止单字母变量,优先使用 ?string 而非 string|null,要求 PHPStan level 8+ 静态分析。
现代 PHP 8.4 特性:包括 Readonly 类/属性、带方法的 Enums、Match 表达式、构造函数属性提升、一级可调用语法、DNF 联合类型、Property Hooks、非对称可见性等,强调在适用场景下直接使用而不添加冗余注释。
Laravel 架构模式:
- 瘦控制器:仅负责校验、调用服务、返回响应
- Service/Action 类分离:服务类处理跨领域编排,Action 类封装单一可调用操作
- Form Request 验证:所有验证外移至 Form Request,配合
toDto()方法实现边界到服务的类型安全传递 - 事件驱动副作用:通知、日志、缓存失效通过 Events + Listeners 处理,禁止在服务中掺杂副作用
数据层最佳实践:Eloquent 配置防懒加载 (preventLazyLoading)、查询指定列、批量数据库级操作、复合索引、Chunk 分块处理、条件查询构建 (when)、UPSERT 批量写入、Prunable 自动清理。
API 与队列设计:契约优先(Resource + Form Request 先于控制器)、Hyrum's Law 意识(响应字段即契约)、错误信封统一、whenLoaded 防 N+1、Job Batching/Chaining、唯一任务约束、失败处理实现。
测试体系:Feature/Unit 分层、工厂驱动数据、状态与副作用双重断言、Facade 模拟(Queue/Http)、数据库状态验证,目标 80%+ 覆盖率。
显著优点
1. 生产级鲁棒性:Fail-fast 配置校验(启动期崩溃而非运行时)、健康检查端点标准化、查询构建器 update() 绕过 Observer 等真实坑洞的深度警示
2. 性能导向:从 OPcache/JIT 到 Eloquent 查询优化形成完整性能知识链
3. 现代语法优先:PHP 8.4 特性不是可选项而是默认实践,推动代码库保持前沿
4. 边界安全强化:第三方响应不可信原则、Scope Binding 防跨租户、Form Request 作为信任边界
潜在局限
- 版本锁定:PHP 8.4+ 和 Laravel 最新特性要求较新的运行时环境,遗留项目迁移成本高
- 静态分析依赖:Level 8+ PHPStan 对团队代码质量意识要求高,小型团队可能产生摩擦
- 约定优于配置:严格的目录结构、命名规范、分层要求在灵活性与规范性之间偏向后者,可能不适用于原型快速验证阶段
适合人群
- 中大型 Laravel 项目开发团队(20+ 模型规模推荐 Feature 文件夹组织)
- 追求类型安全与静态分析覆盖的工程型组织
- 需要从 "能跑" 升级到 "可维护" 的存量 Laravel 应用维护者
- 关注生产事故预防(如 Observer 误删、并发 JSONB 覆盖等)的技术负责人
常规风险
- Observer 作用域误用:
deleting钩子操作父级作用域可能导致级联误删(文档已特别警示) - Chunk + JSON 序列化并发覆盖:
chunkById配合 decode/encode 更新存在竞态条件窗口 - API Resource 日期格式陷阱:
date:<fmt>cast 不影响 JsonResource 输出,直接取属性仍为 ISO 8601 - 查询构建器批量更新事件丢失:
Model::query()->update()和Relation::update()绕过 Eloquent 事件,审计追踪会失效