phpgt / dataobject
结构化、类型安全、不可变的数据传输。
v1.0.7
2023-07-13 09:45 UTC
Requires
- php: >=8.0
- ext-json: *
- phpgt/typesafegetter: ^1.3
Requires (Dev)
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.1
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-09-13 12:17:57 UTC
README
在编程语言中,数据传输对象(DTO)是一种设计模式,它简化了应用程序不同层次之间的数据传输。这个库引入了DataObject
类,可以使用DataObjectBuilder
类从现有的关联数组或标准对象构建。
DataObject
具有以下特性
- 它是不可变的,这意味着代码不能修改它所表示的数据
- 它提供了对包含数据的类型安全获取器
- 它可以在其他
DataObject
中嵌套 - 它可以转换为关联数组和标准对象,也可以从它们转换
使用示例
将对象加载到DataObject
中,然后将其传递给第三方库进行处理。
由于DataObject
类的不可变性,第三方库修改数据内容的危险不存在。
use Gt\DataObject\DataObjectBuilder; // Create a new Builder and build the DataObject from an associative array. // For example, data loaded from another remote data source. $sourceData = [ "id" => 105, "name" => "Edgar Scolmore", "address" => [ "street" => "32 Trestles Lane", "town" => "Lensworth", "county" => "Scamperingshire", "postcode" => "SC41 8PN" ], ]; $builder = new DataObjectBuilder(); $data = $builder->fromAssociativeArray($sourceData); // Pass the data to a third party to process it. ThirdParty::processData($data); // Now we can use the data ourselves for whatever purpose: Database::store( id: $data->getInt("id"), refname: $data->getString("name"), );
处理JSON数据
JSON数据结构在范围上几乎与这个仓库中引入的数据对象相同,只有一个关键区别:JSON数据可以表示原始数据类型,不一定是键值对。正因为如此,PHP.Gt/Json作为此数据对象仓库的扩展,单独维护以提供结构化、类型安全、不可变的JSON对象。