andrepolo/lara-dto

将数据传输对象添加到您的Laravel应用程序中,以传输结构化数据

1.0.2 2020-10-24 20:13 UTC

This package is auto-updated.

Last update: 2024-09-15 10:48:26 UTC


README

将数据传输对象添加到您的Laravel应用程序中,以传输结构化数据

安装

要将此包安装到您的Laravel应用程序中,只需使用composer要求即可

composer require andrepolo/lara-dto

要修改配置文件,例如更改数据传输项类默认命名空间,您可以使用Artisan命令

php artisan vendor:publish --tag=datatransfer-config

或使用包中提供的命令

php artisan ap-dto:publish:config

执行此操作后,您将在app/config目录中找到一个新的配置文件:datatransfer.php

创建项和集合

创建DataTransferItem类

推荐使用此包提供的Artisan命令

php artisan ap-dto:make:item

此命令将创建一个具有给定名称的新DataTransferItem并将其存储在配置文件datatransfer.php中定义的命名空间中。如果传递一个如Subfolder\\NestedItem之类的名称,则NestedItem类将存储在命名空间下的Subfolder文件夹中。默认命名空间为App\DataTransfer。命令会检查您的目录中是否存在具有相同名称的类。要强制命令覆盖此现有类(在大多数情况下不太可能),您可以在make命令中添加-f选项。如果使用名称MyFirstDatatransferItem,则此类将如下所示

<?php

namespace App\DataTransfer;

use AndrePolo\LaraDto\DataTransferItem;

class MyFirstDatatransferItem extends DataTransferItem
{
    // add your properties here
}

另一种方法是简单地通过复制上面的示例来创建一个新的类。此类必须扩展AndrePolo\LaraDto\DataTransferItem

创建datatransfer类的实例

// simly with new up a class
$item = new ExampleItem();

// using laravels service container
$item = app()->make(ExampleItem::class);

// or if you registered your class with an alias
$item = app()->make('class_alias');

创建DataTransferCollection类

同样,使用此包中的命令

php artisan ap-dto:make:collection

此命令创建一个具有给定名称的DataTransferCollection。您再次有-f选项来强制命令创建新类。每个DataTransferCollection都包含一个DataTransferItems列表。您可以使用-i--item选项自动创建相应的DataTransferItem。使用此选项时,命令会创建一个与集合同名但后缀为Item的项目。

例如,如果您传递名称MyFirstDatatransfer,则会创建一个名为MyFirstDatatransferItem的项目。同样,如果您传递MyFirstDatatransferCollection作为名称

此类将如下所示

<?php

namespace App\DataTransfer;

use AndrePolo\LaraDto\DataTransferCollection;

class MyFirstDatatransferCollection extends DataTransferCollection
{
    protected $itemClass = MyFirstDatatransferItem::class;
}

用法

您可以通过直接传递数据到构造函数来填充它

$item = new ExampleItem($data);

或者简单地创建一个新的实例,然后调用fromArray方法

$item = new ExampleItem();
$item->fromArray($data);

使用此方法使用给定值填充所有匹配的属性。此方法最重要的功能是它自动填充所有嵌套的DataTransferItemDataTransferCollection实例。

设置器和获取器

如果您为属性定义了设置器方法,它将在fromArray方法中自动使用。您可以全局覆盖此行为
通过将配置变量use_setter设置为false,或通过覆盖特定的useSetter方法。

protected function useSetter()
{
    return false;
}

对于获取器方法,它的工作方式与上面描述的相同。

严格模式

默认情况下禁用。您可以通过在配置文件中将它设置为true来全局启用它。此选项指示是否只能当相应的值与在文档块中定义的值匹配时,才能从数组或JSON填充项目。有关更多信息,请参阅配置文件。

模式

通常情况下,你的数据传输对象(DTO)将是嵌套结构。因此,快速与你合作的人分享DTO的模式可能很有用。你可以通过调用对象的schema方法来接收属性数组。当你使用jsonSchema方法时,它将是一个JSON对象。