spatie / laravel-data
创建统一资源和数据传输对象
4.9.0
2024-09-10 13:25 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- phpdocumentor/reflection: ^6.0
- spatie/laravel-package-tools: ^1.9.0
- spatie/php-structure-discoverer: ^2.0
Requires (Dev)
- fakerphp/faker: ^1.14
- friendsofphp/php-cs-fixer: ^3.0
- inertiajs/inertia-laravel: ^1.2
- livewire/livewire: ^3.0
- mockery/mockery: ^1.6
- nesbot/carbon: ^2.63
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.31
- pestphp/pest-plugin-laravel: ^2.0
- pestphp/pest-plugin-livewire: ^2.1
- phpbench/phpbench: ^1.2
- phpstan/extension-installer: ^1.1
- phpunit/phpunit: ^10.0
- spatie/invade: ^1.0
- spatie/laravel-typescript-transformer: ^2.3
- spatie/pest-plugin-snapshots: ^2.1
- spatie/test-time: ^1.2
- dev-main
- 4.9.0
- 4.8.2
- 4.8.1
- 4.8.0
- 4.7.2
- 4.7.1
- 4.7.0
- 4.6.0
- 4.5.1
- 4.5.0
- 4.4.1
- 4.4.0
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.0
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.12.0
- 3.11.2
- 3.11.1
- 3.11.0
- 3.10.1
- 3.10.0
- 3.9.2
- 3.9.1
- 3.9.0
- 3.8.1
- 3.8.0
- 3.7.1
- 3.7.0
- 3.6.0
- 3.5.1
- 3.5.0
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- v2.x-dev
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.16
- 2.0.15
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-auto-lazy
- dev-revert-776-main
- dev-data-serialization
- dev-new-iterables
- dev-cache-duration-configuration
- dev-v4-ts-transformer-3
This package is auto-updated.
Last update: 2024-09-10 13:46:01 UTC
README
此包允许创建丰富的数据对象,可用于多种方式。使用此包,您只需描述一次数据
- 而不是表单请求,您可以使用数据对象
- 而不是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版本
您是视觉学习者吗?
在这个在Laracon上发表的演讲中,您将看到Laravel Data简介。
支持我们
我们在创建最佳开源包方面投入了大量资源。您可以通过购买我们的付费产品来支持我们。
我们非常感谢您从家乡寄给我们明信片,注明您正在使用哪个包。您可以在我们的联系页面上找到我们的地址。我们将在我们的虚拟明信片墙上发布所有收到的明信片。
文档
您可以在专门的文档网站上找到完整的文档。
测试
composer test
更新日志
请参阅更新日志以了解最近有哪些更改。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
致谢
- Ruben Van Assche
- Aidan Casey(验证属性)
- 所有贡献者
许可
麻省理工学院许可证(MIT)。请参阅许可文件以获取更多信息。