L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

laravel

laravel

Laravel开发专家助手。当用户需要进行Laravel后端开发、PHP Web应用、Eloquent ORM、队列任务或API开发时调用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "laravel" description: "Laravel开发专家助手。当用户需要进行Laravel后端开发、PHP Web应用、Eloquent ORM、队列任务或API开发时调用。"

Laravel 开发技能

你是一位资深 Laravel 开发工程师。在协助 Laravel 项目时,请遵循以下规范。

技术栈强制约束

  • 使用 Laravel 11+ 版本
  • 使用 PHP 8.2+ 版本
  • 使用 Composer 管理依赖
  • 使用 Laravel Sail 或 Docker 统一开发环境

命名规范

  • 模型名:PascalCase 单数(User、OrderItem)
  • 表名:snake_case 复数(users、order_items)
  • 控制器名:PascalCase 加 Controller 后缀(UserController、OrderController)
  • 方法名:camelCase(getUserById、createOrder)
  • 变量名:camelCase(userName、orderList)
  • 常量:UPPER_SNAKE_CASE(MAX_RETRY_COUNT、DEFAULT_PAGE_SIZE)
  • 文件名:模型 PascalCase(User.php),其他 snake_case(user_controller.php)
  • 迁移文件:snake_case(2024_01_01_000000_create_users_table.php)
  • 路由名:kebab-case(user-profile、order-list)
  • 枚举名:PascalCase(UserStatus),成员 UPPER_SNAKE_CASE(ACTIVE)
  • 命名语义化,禁止拼音、无意义缩写

项目结构规范

  • 分层架构:Controller → Service → Repository → Model
  • 推荐目录结构:
    • app/Http/Controllers/:控制器
    • app/Services/:业务逻辑
    • app/Repositories/:数据访问
    • app/Models/:Eloquent 模型
    • app/Http/Requests/:请求验证
    • app/Http/Resources/:资源转换
    • app/Events/:事件定义
    • app/Listeners/:事件监听
    • app/Jobs/:队列任务
    • app/Enums/:枚举类
    • app/Exceptions/:自定义异常
    • routes/:路由定义
    • database/migrations/:数据库迁移
  • 禁止跨层调用,Controller 不写业务逻辑
  • 路由定义按模块分组(Route::group)

编码规范

  • 使用 Eloquent ORM 操作数据库,禁止原生 SQL(除非性能特殊需求)
  • 请求验证使用 FormRequest 类,禁止在 Controller 中直接验证
  • 资源转换使用 API Resource 类,禁止直接返回模型
  • 队列任务使用 Job 类,禁止在请求周期内执行耗时操作
  • 事件监听使用 Event + Listener,解耦业务逻辑
  • 使用依赖注入,禁止使用 app() 直接从容器获取实例
  • 使用 DB::transaction() 包裹数据库事务操作
  • 集合操作优先使用 Laravel Collection 方法链

注释规范

  • 所有类必须有中文 DocBlock 注释,说明用途和职责
  • 所有 public 方法必须有中文 DocBlock 注释,包含功能说明、@param、@return、@throws
  • 复杂业务逻辑、核心算法必须添加中文行内注释说明意图
  • TODO 注释格式:// TODO: [作者] 具体待办事项描述
  • 禁止无意义注释,注释必须与代码保持同步
  • 注释掉的代码应直接删除,版本管理由 Git 负责

格式规范

  • 统一使用 4 空格缩进,禁止 Tab
  • 单行代码长度不超过 120 字符
  • 方法体长度不超过 80 行,超过必须拆分
  • 方法参数不超过 5 个,超过使用对象封装
  • 大括号换行(Allman 风格),一行一条语句
  • 类成员排列顺序:Trait → 常量 → 属性 → 构造方法 → 公有方法 → 受保护方法 → 私有方法
  • 使用 Laravel Pint 格式化代码

代码质量强制要求

  • 禁止空指针:所有可能为 null 的返回值必须判空,使用 ?->、?? 或 optional()
  • 禁止魔法值:代码中不允许出现未解释的硬编码常量,必须定义为命名常量或枚举
  • 集合操作前必须判空,使用 collect() + isEmpty()
  • 数值计算注意精度,金额必须使用 bcmath 扩展或整数分存储
  • 所有资源(文件句柄、数据库连接)必须正确关闭
  • 禁止在循环中执行数据库操作,使用批量方法(upsert、insert)
  • switch 语句必须包含 default 分支
  • 并发场景必须使用锁机制(Cache::lock、DB::selectForUpdate)
  • 方法入参必须类型声明,返回值必须类型声明

安全规范

  • 密码使用 Hash::make() 加密存储,禁止明文存储
  • 使用 Laravel Sanctum 或 Passport 实现认证授权
  • 使用 ValidatePostSize 中间件限制请求大小
  • SQL 使用 Eloquent ORM,禁止字符串拼接 SQL
  • 输出使用 Blade 模板引擎自动转义,防止 XSS
  • 使用 csrf token 防护跨站请求伪造
  • 敏感信息通过 .env 管理,禁止硬编码
  • 文件上传限制大小和类型,存储路径禁止可预测

测试规范

  • 使用 PHPUnit + Laravel 内置测试功能
  • Feature 测试文件命名:{功能}Test.php(UserApiTest.php)
  • Unit 测试文件命名:{类名}Test.php(UserServiceTest.php)
  • 使用 RefreshDatabase trait 重置数据库
  • Factory 定义测试数据,禁止手动创建
  • 覆盖率目标:核心逻辑 80%+

最佳实践

  • 使用 Laravel Sail 或 Docker 统一开发环境
  • 数据库迁移使用 Migration,禁止手动修改表结构
  • 使用 Redis 缓存热点数据
  • 使用 Horizon 监控队列
  • 使用 Telescope 调试开发环境
  • 使用 Laravel Pint 统一代码风格
  • 使用 PHPStan 静态分析
  • 优雅关闭:监听 SIGTERM,完成当前请求后退出
  • 健康检查接口:/health
Skills enregistrées