Skip to content

021-projects/json-schema

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Object-Oriented JSON Schema Generation in PHP

Total Downloads Latest Stable Version License

This library provides a way to generate JSON schemas in PHP using an object-oriented approach. It is inspired by the JSON Schema standard and aims to provide a way to generate JSON schemas in a more readable and maintainable way.

Installation

composer require 021/json-schema

Usage

use O21\JsonSchema\Schema;
use O21\JsonSchema\Enums\Type;
use O21\JsonSchema\Enums\Format;

$schema = new Schema(
    schema: 'http://json-schema.org/draft-07/schema#',
    type: Type::OBJECT,
    properties: [
        'name' => new Schema(
            type: Type::STRING,
            minLength: 1,
            maxLength: 255
        ),
        'age' => new Schema(
            type: Type::INTEGER,
            minimum: 0,
            maximum: 150
        ),
        'addresses' => new Schema(
            type: Type::ARRAY,
            items: new Schema(
                type: Type::OBJECT,
                properties: [
                    'street' => new Schema(
                        type: Type::STRING,
                        minLength: 1,
                        maxLength: 255
                    ),
                    'city' => new Schema(
                        type: Type::STRING,
                        minLength: 1,
                        maxLength: 255
                    ),
                    'zip' => new Schema(
                        type: Type::STRING,
                        pattern: '^[0-9]{5}$'
                    )
                ],
                required: ['street', 'city', 'zip']
            ),
        ),
        'email' => new Schema(
            type: Type::STRING,
            format: Format::EMAIL
        ),
        'phone' => new Schema(
            type: Type::STRING,
            pattern: '^\+[0-9]{1,3}\.[0-9]{1,14}$'
        ),
        'is_active' => new Schema(
            type: Type::BOOLEAN,
            default: true,
        ),
    ]
);
// Convert the schema to JSON
$json = $schema->toJson();
// Convert the schema to an object
$obj = $schema->toObject();

Transform

Almost all properties listed on the JSON Schema reference are supported, but if some properties are missing in the current version of the library or you want to add your own, you can use the transform method. It is called when the Schema class is transformed into the stdClass class to generate JSON from it:

use O21\JsonSchema\Schema;

$schema = new Schema(
    transform: function (stdClass $schema): void {
        $schema->foo = 'bar';
    }
);

Support Us

  • Bitcoin: 1G4U12A7VVVaUrmj4KmNt4C5SaDmCXuW49
  • Litecoin: LXjysogo9AHiNE7AnUm4zjprDzCCWVESai
  • Ethereum: 0xd23B42D0A84aB51a264953f1a9c9A393c5Ffe4A1
  • Tron: TWEcfzu2UAPsbotZJh8DrEpvdZGho79jTg

About

Object-Oriented JSON Schema Generation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages