ulrack / json-schema
Requires
- php: ^7.2
- grizz-it/enum: ^1.0
- grizz-it/storage: ^1.0
- grizz-it/validator: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.4
README
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。
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT以获取详细信息。
MIT许可协议
版权所有 (c) GrizzIT
特此免费授予任何获得此软件及其相关文档副本(“软件”)的个人,在不受限制的情况下处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的个人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的质量保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定用途和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他原因,无论该索赔、损害或其他责任是否与软件或软件的使用或其他方式有关。