jurasciix/objeckson

该包最新版本(1.0.3)没有提供许可证信息。

1.0.3 2024-05-28 03:36 UTC

This package is auto-updated.

Last update: 2024-09-19 23:16:28 UTC


README

Objeckson 是一个用于在 PHP 对象中显示动态关联结构(通常以 JSON 格式存储)的库。

功能和路线图

  • 反序列化数组
  • 转换为列表
  • 分析泛型类型
  • 处理可为空的类型
  • 自定义设置器
  • 分析数组形状:array{foo: Foo, bar: Bar}
  • Readonly 属性的默认值
  • 转换为 STD 对象:DateTime, SplFixedArray 等...
  • 直接显示类型的组合(基本类型):string|int|Foo
  • OneOf

安装

要求

  • PHP ≥ 8.1
  • Composer

通过 composer 安装

composer require jurasciix/objeckson:^1.0

快速教程

以下代码演示了初始化提供 Objeckson 功能的对象,以及将 JSON 数据反序列化并显示为 PHP 对象的过程。

use jurasciix\objeckson\JsonProperty;
use jurasciix\objeckson\Optional;
use jurasciix\objeckson\Objeckson;

#[JsonProperty]
class APIResponse {
    #[Optional]
    public ?APIError $error = null;
    #[Optional]
    public mixed $data = null;
}

#[JsonProperty]
class APIError {
    public int $code;
    public string $description;
}

$responseJSON = <<<JSON
{
    "error": {
        "code": 1,
        "description": "Error description"
    }
}
JSON;

// Инициализируем главный объект 
$objeckson = new Objeckson();

// Десериализовываем и отображаем данные на объект типа APIResponse.
$response = $objeckson->fromJson($responseJSON, APIResponse::class);

// Смотрим, что у нас вышло.
var_dump($response);