021 / json-schema
Object-Oriented JSON Schema Generation
v1.0.1
2024-11-23 13:47 UTC
Requires
- php: >=8.1
README
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