focus/json-api

用于处理JSON:API数据的工具集合。

2.0.0 2023-11-15 22:04 UTC

This package is auto-updated.

Last update: 2024-09-15 23:39:13 UTC


README

Minimum PHP Version Latest Stable Version CI Status Code Coverage

用于处理JSON:API数据的工具集合。此包是focus/data的扩展。

安装

使用composer(composer)安装和此包的最佳方式

composer require focus/json-api

基本用法

此包提供了一些读取JSON:API格式数据的结构。支持资源及其集合。

典型的入口点是DocumentData

use Focus\JsonApi\DocumentData;

$data = DocumentData::fromRequest($request);

注意:JsonData一样,此包支持从字符串和PSR-7请求和响应对象中读取JSON。

一旦创建文档,主数据可以像资源一样访问

$book = $data->resource();

var_dump($book->attribute(path: 'title'));
var_dump($book->attribute(path: 'subtitle'));
var_dump($book->relation(name: 'author'));

或资源集合

$books = $data->collection();

var_dump($books->ids());

或包含的资源

$publishers = $data->included(type: 'publisher');

var_dump($publishers->ids());

类型

标识符

Identifier对象扩展了Data并添加了读取类型和标识符值的辅助方法

$id = $data->id();
$type = $data->type();

资源

Resource对象从Identifier扩展并添加了读取属性和关系的辅助方法

$id = $data->id();
$topics = $data->attribute(path: 'topics');
$author = $data->relation(name: 'author');
$publishers = $data->relations(name: 'publishers');
  • relation()的值是一对一到关系标识符。当关系未定义时,将返回null。当关系定义为null时,将返回一个空白的Identifier
  • relations()的值是一对多关系标识符集合。当关系未定义时,将返回null。当关系定义为null时,将返回一个空的IdentifierCollection

relation()relations()的返回值以这种方式结构化,以便确定关系是否存在(未定义)与被取消设置(null)。

标识符集合

IdentifierCollection对象表示标识符对象的集合,并添加了读取标识符值的辅助方法

var_dump($publishers->ids());

该集合也可以迭代

foreach ($publishers as $publisher) {
    var_dump($publisher->id());
    var_dump($publisher->type());
}

资源集合

ResourceCollection对象表示资源对象的集合,并添加了读取标识符值的辅助方法

var_dump($publishers->ids());

该集合也可以迭代

foreach ($publishers as $publisher) {
    var_dump($publisher->id());
    var_dump($publisher->attribute(path: 'name'));
}