davidkvasnovsky / laravel-data
创建统一的资源和数据传输对象
1.4.5
2022-03-18 14:42 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^8.71|^9.0
- phpdocumentor/type-resolver: ^1.5
- spatie/laravel-package-tools: ^1.9.0
Requires (Dev)
- brianium/paratest: ^6.2
- fakerphp/faker: ^1.14
- friendsofphp/php-cs-fixer: ^3.0
- nette/php-generator: ^3.5
- nunomaduro/collision: ^5.3|^6.0
- orchestra/testbench: ^6.23|^7.0
- phpunit/phpunit: ^9.3
- spatie/laravel-typescript-transformer: ^2.0
- spatie/phpunit-snapshot-assertions: ^4.2
- spatie/test-time: ^1.2
- vimeo/psalm: ^4.4
This package is auto-updated.
Last update: 2024-09-24 04:09:59 UTC
README
为Laravel提供强大的数据对象
此包允许创建丰富的数据对象,可以以各种方式使用。使用此包,您只需描述一次数据
- 而不是表单请求,您可以使用数据对象
- 而不是API转换器,您可以使用数据对象
- 而不是手动编写TypeScript定义,您可以使用... 🥁 数据对象
laravel-data特定的对象只是一个扩展自Data的普通PHP对象
use Spatie\LaravelData\Data; class SongData extends Data { public function __construct( public string $title, public string $artist, ) { } }
通过扩展Data,您将启用许多新功能,如
- 自动将数据对象转换为资源(如Laravel API资源)
- 使用延迟属性仅转换数据对象请求的部分
- 自动从请求数据创建数据对象并进行验证
- 自动解析数据对象内属性的验证规则
- 允许您从任何类型构建数据对象
- 在创建数据对象时自动验证数据对象
- 从您的数据对象生成TypeScript定义,您可以在前端使用它们
- 将数据对象保存为Eloquent模型的属性
- 等等...
您为什么要使用这个包呢?
- 您有信心,数据在离开您的应用程序并再次从前端返回时是类型化的,这大大减少了错误
- 您不需要编写三次相同的属性(在资源、数据传输对象和请求验证中)
- 您需要编写的验证规则更少,因为它们通过PHP的类型系统很明显
- 您将免费获得数据对象的TypeScript版本
支持我们
我们投入了大量资源来创建一流的开放源代码包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从您的家乡给我们寄来明信片,说明您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将发布所有收到的明信片在我们的虚拟明信片墙上。
文档
您可以在专门的文档网站上找到完整的文档。
测试
composer test
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全策略,了解如何报告安全漏洞。
鸣谢
- Ruben Van Assche
- Aidan Casey(验证属性)
- 所有贡献者
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。