https://github.com/021-projects/json-schema
Object-Oriented JSON Schema Generation
https://github.com/021-projects/json-schema
Last synced: 4 months ago
JSON representation
Object-Oriented JSON Schema Generation
- Host: GitHub
- URL: https://github.com/021-projects/json-schema
- Owner: 021-projects
- License: mit
- Created: 2024-11-23T13:09:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-23T13:47:35.000Z (over 1 year ago)
- Last Synced: 2025-07-21T09:33:00.966Z (12 months ago)
- Language: PHP
- Size: 12.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Object-Oriented JSON Schema Generation in PHP
This library provides a way to generate JSON schemas in PHP using an object-oriented approach. It is inspired by the [JSON Schema](https://json-schema.org/) standard and aims to provide a way to generate JSON schemas in a more readable and maintainable way.
## Installation
```bash
composer require 021/json-schema
```
## Usage
```php
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](https://json-schema.org/understanding-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:
```php
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