用途:laravel-dtos 是一份 Claude 技能指南,用于在 Laravel 项目中使用 Spatie Laravel Data 包构建数据传输对象(DTO),处理数据传输、API 请求与响应场景。
主要能力与约定:
- 主张不要传递多个原始值,始终用 Data 对象包裹数据,以获得类型安全、IDE 自动补全、清晰的层间契约、验证集成与请求到领域对象的转换。
- 优先使用 Data::from(数组),让包依据构造函数属性类型自动完成类型转换,如字符串转 CarbonImmutable、转枚举、数组转 Collection;避免在调用代码中手动转换。
- 避免使用 #[MapInputName] 等大小写映射属性,改为在调用代码中显式映射字段名。
- 日期转换是自动的,可在 config/data.php 配置 date_format。
- DTO 使用构造函数属性提升(promoted properties),为所有属性标注类型,集合使用 PHPDoc 标注,支持嵌套 DTO。
- 可在构造函数中应用格式化器(Formatters),如 EmailFormatter、PhoneFormatter、PostcodeFormatter。
- 可为 DTO 添加静态工厂方法,命名 from{SourceType},如 fromArray、fromRequest、fromModel;复杂转换可放到独立 Transformer 类。
- 支持模型 casts 将 JSON 列转为 DTO。
- 命名约定:响应 DTO 为 {Entity}Data,请求 DTO 为 {Action}{Entity}Data,嵌套 DTO 为 {Descriptor}{Entity}Data。
- 目录结构涵盖 app/Data/ 下的 Concerns、Formatters、Transformers 等。
- 控制器通过 Transformer 将请求转为 DTO 并传给 Action;Action 接收 DTO 作为参数。
- 测试通过 HasTestFactory trait 与 PHPDoc 关联工厂,使用 testFactory()->make() 或 collect(count: 5) 生成测试数据。
使用方式:本指南面向 Claude 技能场景,需结合 Spatie Laravel Data 官方文档使用。具体安装命令与版本信息暂未提供。
限制:资料未提供收费、价格、平台与效果的明确说明,也未见完整安装步骤;使用前应查阅 Spatie Laravel Data 官方文档确认包特性与配置。