diephp / data-object
简单对象,可用于DTO/MODEL/ValueObject。
v1.0.0
2024-05-24 10:49 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9
README
简单对象,可用于DTO/MODEL/ValueObject。
概述
DataObject类是一个灵活的数据容器,设计用于作为数据传输对象(DTO)、模型或值对象。它可以初始化为关联数组,并提供各种方法来操作和访问数据。此类实现了\JsonSerializable和ArrayAccess接口。
功能
- 使用关联数组初始化
- 实现
\JsonSerializable和ArrayAccess接口 - 支持点表示法以访问嵌套数据
- 提供合并、过滤、映射和转换数据的方法
- 如果对象实现了
toArray方法,则自动将其转换为数组 - 提供诸如
hash、flatten、collapse、clone等各种实用方法
安装
通过Composer安装包
composer require diephp/dataobject
或手动将其添加到composer.json
"require": { "diephp/dataobject": "^1.0.0" }
用法
初始化
创建一个新的DataObject实例
use DiePHP\DataObject; $data = new DataObject([ 'name' => 'John Doe', 'email' => 'john.doe@example.com' ]);
或使用静态的of方法
$data = DataObject::of([ 'name' => 'John Doe', 'email' => 'john.doe@example.com' ]);
访问数据
使用属性表示法或数组访问来访问数据
echo $data->name; // John Doe echo $data['email']; // john.doe@example.com
检查键是否存在
if ($data->has('name')) { // Key exists }
操作数据
设置值
$data->set('name', 'Jane Doe');
获取带默认值的值
$email = $data->get('email', 'default@example.com');
合并新数据
$data->merge([ 'address' => '123 Main St', 'phone' => '123-456-7890' ]);
过滤数据
$data->filter(function ($value, $key) { return !empty($value); });
映射数据
$mappedData = $data->map('*', function ($value) { return strtoupper($value); });
实用方法
转换为数组
$array = $data->toArray();
转换为JSON
$json = json_encode($data);
获取数据的MD5哈希值
$hash = $data->hash();
克隆对象
$clone = $data->clone();
示例
use DiePHP\DataObject; $data = new DataObject([ 'user' => [ 'name' => 'John Doe', 'email' => 'john.doe@example.com' ] ]); echo $data->get('user.name'); // John Doe $data->set('user.address', '123 Main St'); echo $data->get('user.address'); // 123 Main St $data->merge(['user.phone' => '123-456-7890']); echo $data->get('user.phone'); // 123-456-7890 $data->filter(function ($value, $key) { return !empty($value); }); echo $data->hash(); // MD5 hash of the data echo json_encode($data); // JSON representation
许可
此项目使用MIT许可证。有关详细信息,请参阅LICENSE文件。