phpgt/dataobject

结构化、类型安全、不可变的数据传输。

资助包维护!
phpgt

v1.0.7 2023-07-13 09:45 UTC

README

在编程语言中,数据传输对象(DTO)是一种设计模式,它简化了应用程序不同层之间的数据传输。此库引入了DataObject类,该类可以使用DataObjectBuilder类从现有的关联数组或标准对象构建。

Build status Code quality Code coverage Current version PHP.Gt/DataObject documentation

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数据结构在此存储库中引入的DataObject的范围几乎相同,但有一个关键的区别:JSON数据可以表示原始数据类型,不一定总是键值对。因此,PHP.Gt/Json是独立维护的,以提供结构化、类型安全、不可变的JSON对象,作为此DataObject存储库的扩展