数据传输对象

v1.1.1 2022-12-07 13:35 UTC

This package is auto-updated.

Last update: 2024-09-07 17:08:17 UTC


README

Run tests Latest Stable Version

安装

此包需要 php:^8.1
您可以通过composer安装它

composer require bluestone/dto

用法

此包的目标是简化构建用于传递结构化数据的对象的构建。

构建简单的DTO

一个扩展DTO的类的示例

use Bluestone\DataTransferObject\DataTransferObject;

class Hooman extends DataTransferObject
{
    public string $name;
}

您可以像这样实例化此类

$jane = new Hooman(name: 'Jane');
$john = new Hooman(['name' => 'John']);

使用类型转换构建复杂的DTO

一个具有类型转换属性的类的示例

use Bluestone\DataTransferObject\DataTransferObject;
use Bluestone\DataTransferObject\Attributes\CastWith;
use Bluestone\DataTransferObject\Casters\ArrayCaster;

class Hooman extends DataTransferObject
{
    public string $name;
    
    #[CastWith(ArrayCaster::class, type: Hooman::class)]
    public array $children;
}

您可以像这样实例化此类

$jane = new Hooman(
    name: 'Jane', 
    children: [
        new Hooman(name: 'Mario'), 
        new Hooman(name: 'Luigi'),
    ],
);

$john = new Hooman([
    'name' => 'John',
    'children' => [
        ['name' => 'Mario'],
        ['name' => 'Luigi'],
    ],
]);

使用映射构建复杂的DTO

一个具有映射属性的类的示例

use Bluestone\DataTransferObject\DataTransferObject;
use Bluestone\DataTransferObject\Attributes\Map;

class Hooman extends DataTransferObject
{
    #[Map('date_of_birth')]
    public string $bornAt;
}

您可以像这样实例化此类

$jane = new Hooman(
    date_of_birth: '1970-01-01', 
);

$john = new Hooman([
    'date_of_birth' => '1970-01-01',
]);

贡献

DTO是一个开源项目,遵循MIT许可证,并且接受贡献