kuwuai / data-transfer-object
使用对象、数组、JSON或点标记加载/查看 dto 元素
v0.0.4
2015-04-08 16:51 UTC
Requires (Dev)
- mockery/mockery: ~0.9.3
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-14 17:16:16 UTC
README
此类设计用于轻松添加和查看数据。加载对象、数组或 JSON;使用对象、数组或点标记读取;输出为 JSON 字符串。
用法
您可以使用数组、可数对象或 JSON 字符串实例化此类。这些都是等效的
$object = new StdObject; $object->foo = 'bar'; $dto = new DTO($object); $dto = new DTO(['foo'=>'bar']); $dto = new DTO('{"foo":"bar"}'); $dto = DTO::make($object); $dto = DTO::make(['foo'=>'bar']); $dto = DTO::make('{"foo":"bar"}');
使用数组、对象或点标记读取数据
echo $dto['x']; echo $dto->x; echo $dto->get('x');
这些也可以处理嵌套集合
echo $dto['x']['y']['z']; echo $dto->x->y->z; echo $dto->get('x.y.z');
默认情况下,访问缺失属性时将返回空字符串。其他可能性
$dto = new DTO([], 'x'); // instantiate with a given default $dto->setDefault('x'); // change the default $dto->get('path.to.key', 'x'); // override default for this method call $dto->setDefault(Null); // throw an UndefinedProperty exception
使用数组或对象标记添加新数据
$dto['x'] = 'y'; $dto->x = 'y';
计数和迭代属性
$dto = new DTO([...]) $count = count($dto); foreach($dto as $key=>$value) // do something
Laravel 支持
存在两个版本的 DTO 实现了 Laravel 特定的接口。如果您想将 DTO 作为一等 Laravel 对象与 Laravel 一起使用,请使用这些类之一。
- Laravel4DTO 实现 JsonableInterface 和 ArrayableInterface
- Laravel5DTO 实现 Jsonable 和 Arrayable
您可以使用这些类在将输出发送到视图之前对其进行清理,例如
$models = Model::all(); $output = []; foreach($models as $model) $output[] = new Laravel4DTO([ 'name' => $model->name, 'paid' => $model->payments->sum('payment_amount'), ... ]); return new Collection($output);
安装
通过 Composer 安装该软件包。按照以下方式编辑您的 composer.json 文件
"require": {
"kumuwai/data-transfer-object": "dev-master"
}
然后,从终端更新 Composer
composer update
TODO
目前没有