grizz-it / json-schema
JSON schema验证器。
Requires
- php: ^8.0
- grizz-it/enum: ^1.1
- grizz-it/storage: ^1.1
- grizz-it/validator: ^1.1
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-24 21:24:19 UTC
README
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。
贡献
有关详细信息,请参阅CONTRIBUTING和CODE_OF_CONDUCT。
MIT许可证
版权所有 (c) GrizzIT
在此特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人,免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供方提供软件的人这样做,前提是
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论这些责任是源于合同、侵权或其他原因,是否与软件、软件的使用或其他方式有关。