focus / json-api
用于处理JSON:API数据的工具集合。
2.0.0
2023-11-15 22:04 UTC
Requires
- php: ^8.2
- focus/data: ^2.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- doctrine/coding-standard: ^12.0
- ergebnis/composer-normalize: ^2.39
- nyholm/psr7: ^1.8
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.4
This package is auto-updated.
Last update: 2024-09-15 23:39:13 UTC
README
用于处理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')); }