grizz-it/json-schema

JSON schema验证器。

1.0.0 2021-02-24 13:21 UTC

This package is auto-updated.

Last update: 2024-09-24 21:24:19 UTC


README

Build Status

GrizzIT JSON Schema

本软件包包含一个用于PHP的JSON schema验证器库。它支持Draft 07和06。

要了解JSON schema是什么以及它们是如何工作的,请参阅json-schema-org的手册。

该软件包生成一个可重用的验证对象,可用于验证数据。

安装

要安装该软件包,请运行以下命令

composer require grizz-it/json-schema

使用方法

在创建验证对象之前,需要实例化验证器工厂。这可以通过以下代码片段完成

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

$factory = new SchemaValidatorFactory();

以下所有描述的生成验证对象的方法都将导致一个ValidatorInterface。要对此对象进行验证,只需将数据传递给__invoke方法,如下所示

<?php

use GrizzIt\Validator\Common\ValidatorInterface;

/** @var ValidatorInterface $validator */
$validator($myData); // returns true or false.

创建工厂后,有4种方式可以创建验证对象。

对象注入

如果对象已经由(例如)之前的json_decode调用创建(第二个参数必须是null或false,以获取对象)。

可以通过在之前实例化的SchemaValidatorFactory上调用create方法来创建验证对象。

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

/** @var object|bool $schema */
/** @var SchemaValidatorFactory $factory */
$factory->create($schema);

还可以创建一个经过验证的验证对象。这是在提供的schema上设置了$schema属性时可能的。此时,该schema将与属性上定义的schema进行验证。可以使用以下代码片段完成

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

/** @var object|bool $schema */
/** @var SchemaValidatorFactory $factory */
$factory->createVerifiedValidator($schema);

本地文件

要从本地schema文件创建验证器对象,也可以将此文件位置引用到方法中,并让该方法加载它。可以使用以下代码片段完成

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

/** @var SchemaValidatorFactory $factory */
$factory->createFromLocalFile('path/to/my/schema.json');

远程文件

schema也可以从远程位置加载,例如:https://json-schema.fullstack.org.cn/draft-07/schema#。要从远程位置加载schema,请使用以下方法

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

/** @var SchemaValidatorFactory $factory */
$factory->createFromRemoteFile('https://json-schema.fullstack.org.cn/draft-07/schema#');

从字符串

如果需要从JSON字符串创建验证对象,请使用createFromString方法。

<?php

use GrizzIt\JsonSchema\Factory\SchemaValidatorFactory;

/** @var SchemaValidatorFactory $factory */
$factory->createFromString(
    '{"$ref": "https://json-schema.fullstack.org.cn/draft-07/schema#"}'
);

变更日志

有关最近更改的详细信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTINGCODE_OF_CONDUCT

MIT许可证

版权所有 (c) GrizzIT

在此特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人,免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人这样做,前提是

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论这些责任是源于合同、侵权或其他原因,是否与软件、软件的使用或其他方式有关。