kuwuai/data-transfer-object

使用对象、数组、JSON或点标记加载/查看 dto 元素

v0.0.4 2015-04-08 16:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:16:16 UTC


README

Latest Stable Version Build Status Coverage Status Quality Score License

此类设计用于轻松添加和查看数据。加载对象、数组或 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

目前没有