ia-php-laravel

🐘 Laravel 工程化最佳实践指南

专业 Laravel/PHP 8.4 开发指南,涵盖现代架构模式、Eloquent 优化、生产级队列与测试实践,源自成熟工程经验。

收藏
3k
安装
1.3k
版本
3.0.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

本技能为 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 事件,审计追踪会失效

ia-php-laravel 内容

references文件夹
手动下载zip · 15.6 kB
factories.mdtext/markdown
请选择文件