spatie/laravel-data

创建统一资源和数据传输对象

支持包维护!
spatie

安装: 8,986,243

依赖者: 271

建议者: 2

安全性: 0

星标: 1,248

关注者: 12

分支: 209

公开问题: 13

4.9.0 2024-09-10 13:25 UTC

README

Latest Version on Packagist Tests PHPStan Check & fix styling Total Downloads

此包允许创建丰富的数据对象,可用于多种方式。使用此包,您只需描述一次数据

  • 而不是表单请求,您可以使用数据对象
  • 而不是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

更新日志

请参阅更新日志以了解最近有哪些更改。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

致谢

许可

麻省理工学院许可证(MIT)。请参阅许可文件以获取更多信息。