ulrack/json-schema

此包已被废弃,不再维护。作者建议使用 grizz-it/json-schema 包代替。

Ulrack JSON schema 验证器。

1.0.4 2020-04-09 21:22 UTC

This package is auto-updated.

Last update: 2021-02-24 13:24:50 UTC


README

Build Status

Ulrack JSON Schema

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

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

该包生成一个可重复使用的验证对象,可以用来验证数据。

安装

要安装此包,请运行以下命令

composer require ulrack/json-schema

使用方法

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

<?php

use Ulrack\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 Ulrack\JsonSchema\Factory\SchemaValidatorFactory;

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

还可以创建一个已验证的验证对象。这是在提供的模式上设置了 $schema 属性时可能的。模式将随后与属性上定义的模式进行验证。可以使用以下代码片段完成:

<?php

use Ulrack\JsonSchema\Factory\SchemaValidatorFactory;

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

本地文件

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

<?php

use Ulrack\JsonSchema\Factory\SchemaValidatorFactory;

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

远程文件

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

<?php

use Ulrack\JsonSchema\Factory\SchemaValidatorFactory;

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

从字符串

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

<?php

use Ulrack\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

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

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

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