Skip to content

PHP library that supposed for mapping JSON objects to PHP objects

License

Notifications You must be signed in to change notification settings

JuraSciix/Objeckson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Objeckson

Objeckson - это библиотека для отображения динамических ассоциативных структур (которые, как правило, хранятся в формате JSON) на объекты PHP.

Возможности и roadmap

  • Десериализовывать массивы
  • Отображать на перечисления
  • Анализировать обобщенные типы
  • Работать с nullable-типами
  • Пользовательские сеттеры
  • Анализировать array-shapes: array{foo: Foo, bar: Bar}
  • Значения по умолчанию для Readonly свойств
  • Отображать на объекты STD: DateTime, SplFixedArray, etc...
  • Комбинации прямо отображаемых типов (примитивных): 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);