Die Oberfläche ist lokalisiert; Skill-Beschreibungen und -Dokumente werden per KI automatisch in Ihre Sprache übersetzt. Code, Befehle, Pfade und Fachbegriffe bleiben im Original, maßgeblich ist das Dokument des Autors.
Skills entdecken
Entwicklung · SKILL.md

laravel

laravel

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill-Dokumentation

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
Gespeicherte Skills