andrepolo / lara-dto
将数据传输对象添加到您的Laravel应用程序中,以传输结构化数据
Requires
- php: ^7.2.5
- ext-json: *
- illuminate/support: ^7.4
- kamermans/docblock-reflection: ^1.0
Requires (Dev)
- orchestra/testbench: ^5.1
- phpunit/phpunit: ^9.0
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);
使用此方法使用给定值填充所有匹配的属性。此方法最重要的功能是它自动填充所有嵌套的DataTransferItem或DataTransferCollection实例。
设置器和获取器
如果您为属性定义了设置器方法,它将在fromArray方法中自动使用。您可以全局覆盖此行为
通过将配置变量use_setter设置为false,或通过覆盖特定的useSetter方法。
protected function useSetter() { return false; }
对于获取器方法,它的工作方式与上面描述的相同。
严格模式
默认情况下禁用。您可以通过在配置文件中将它设置为true来全局启用它。此选项指示是否只能当相应的值与在文档块中定义的值匹配时,才能从数组或JSON填充项目。有关更多信息,请参阅配置文件。
模式
通常情况下,你的数据传输对象(DTO)将是嵌套结构。因此,快速与你合作的人分享DTO的模式可能很有用。你可以通过调用对象的schema方法来接收属性数组。当你使用jsonSchema方法时,它将是一个JSON对象。