budgetdumpster/hal-formatter

0.2.2 2018-08-02 18:00 UTC

This package is not auto-updated.

Last update: 2024-09-15 23:27:17 UTC


README

安装

composer require budgetdumpster/hal-formatter:dev-master

测试

可以使用库根目录中的 phpunit 命令运行测试

用法

配置

如果你没有包含嵌入资源的资源,则在 HalFormatter::formatResource 中的 $embedded 参数是可选的。但是,如果你希望将嵌入资源纳入你的响应,配置将帮助你构建所需的架构。

该库基于以下假设:在大多数 ORM 中,相关资源在检索关系时最终会出现在模型的一个属性上。配置允许你根据属性将那些相关资源移动到响应的嵌入部分。

例如,你可能有这样的东西:Model::person_id - 作为相关资源 Model::person 的标识符 Model::person - 实际 Person 模型被拉入的属性

配置如下

$embedded = [
    'person' => [
        'property' => 'person',
        'key' => 'person',
        'uri' => 'person'
    ]
];

这个配置告诉我们 - 我们将把 Model::person 属性中的数据移动到 $key 键下的嵌入资源中,并且该资源的任何链接都将使用 $uri 的值。该库可以与单个模型、数组或模型的集合一起工作。

格式化资源或集合

这个库中最困难的部分是理解配置(由于它是一个矩阵,你可以附加多个配置。让我们使用上面的示例配置和假设我们的模型将有一个名为 person 的属性。

<?php

use BudgetDumpster\Formatters\HalFormatter;
use NameSpace\Models\Address;

$address = new Address();
$collection = $address->where('city', 'like', '%Westlake%');
$embedded = [
    'person' => [
        'property' => 'person',
        'key' => 'person',
        'uri' => 'person'
    ]
];
$formatter = new HalFormatter();
$responseBody = $formatter->formatResource($collection, $uri = 'address', $embedded);

这将返回一个地址集合,地址集合中的每个条目都将移除 person 属性,并将有一个包含在嵌入资源中的 person 集合。

除了可用的少量 API 之外,HalFormatter 还扩展了 Nocarrier\Hal,因此可以使用 Nocarrier\Hal 的所有原生函数。