定制 021/json-schema 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

021/json-schema

最新稳定版本:v1.0.1

Composer 安装命令:

composer require 021/json-schema

包简介

Object-Oriented JSON Schema Generation

README 文档

README

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

统计信息

  • 总下载量: 119
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-11-23