Laravel-Data 开源项目教程
laravel-dataPowerful data objects for Laravel项目地址:https://gitcode.com/gh_mirrors/la/laravel-data
1、项目介绍
Laravel-Data 是一个由 Spatie 开发的 Laravel 扩展包,旨在简化数据对象(Data Object)的创建和管理。通过 Laravel-Data,开发者可以轻松地将复杂的数据结构转换为简单的数据对象,从而提高代码的可读性和可维护性。该项目支持从请求、模型、数组等多种数据源创建数据对象,并且提供了丰富的功能,如数据验证、属性映射、默认值设置等。
2、项目快速启动
安装
首先,通过 Composer 安装 Laravel-Data 包:
composer require spatie/laravel-data
创建数据对象
使用 Artisan 命令快速生成一个数据对象:
php artisan make:data PostData
这将在 app/Data
目录下生成一个 PostData.php
文件。
定义数据对象
编辑生成的 PostData.php
文件,定义数据对象的属性:
namespace App\Data;
use Spatie\LaravelData\Data;
use Carbon\CarbonImmutable;
class PostData extends Data
{
public function __construct(
public string $title,
public string $content,
public string $status,
public CarbonImmutable $published_at
) {}
}
使用数据对象
在控制器中使用 PostData
对象:
use App\Data\PostData;
use Carbon\CarbonImmutable;
public function createPost()
{
$post = PostData::from([
'title' => 'Hello Laravel-Data',
'content' => 'This is an introduction post for the new package',
'status' => 'published',
'published_at' => CarbonImmutable::now(),
]);
return response()->json($post);
}
3、应用案例和最佳实践
数据验证
Laravel-Data 支持自动规则推断和手动规则定义。以下是一个使用自动规则推断的示例:
use Spatie\LaravelData\Attributes\Validation\Required;
use Spatie\LaravelData\Attributes\Validation\StringType;
class PostData extends Data
{
public function __construct(
#[Required, StringType]
public string $title,
#[Required, StringType]
public string $content,
#[Required]
public string $status,
#[Required]
public CarbonImmutable $published_at
) {}
}
嵌套数据对象
Laravel-Data 支持嵌套数据对象,以下是一个嵌套 ImageData
对象的示例:
class ImageData extends Data
{
public function __construct(
public string $filename,
public int $size
) {}
}
class PostData extends Data
{
public function __construct(
public string $title,
public string $content,
public string $status,
public ImageData $image,
public CarbonImmutable $published_at
) {}
}
4、典型生态项目
Laravel-Event-Sourcing
Laravel-Event-Sourcing 是另一个由 Spatie 开发的 Laravel 扩展包,它与 Laravel-Data 结合使用,可以轻松处理事件溯源(Event Sourcing)中的数据对象。通过将事件数据转换为数据对象,开发者可以更方便地管理和查询事件数据。
Laravel-Query-Builder
Laravel-Query-Builder 是一个用于构建复杂查询的扩展包,它与 Laravel-Data 结合使用,可以轻松地将查询结果转换为数据对象,从而简化数据处理流程。
通过以上模块的介绍,您可以快速上手并深入了解 Laravel-Data 的使用方法和最佳实践。
laravel-dataPowerful data objects for Laravel项目地址:https://gitcode.com/gh_mirrors/la/laravel-data