evaisse/php-json-schema-generator
Composer 安装命令:
composer require evaisse/php-json-schema-generator
包简介
A JSON Schema Generator.
README 文档
README
Originaly forked from solvire/php-json-schema-generator
Introduction to json schema below (and tools) :
- http://json-schema.org — reference
- http://www.jsonschemavalidator.net - validator (not 100% valid)
- https://www.openapis.org - use json schema to define REST API docs
- https://jsonschema.net/#/editor - convenient editor for json schema
To validate your structure against a given schema, you can use :
Quickstart
Install using composer
composer require evaisse/php-json-schema-generator
Most simple case
$output = JSONSchemaGenerator\Generator::fromJson('{"a":{"b":2}');
// $output ==> json string
// {
// "$schema": "http://json-schema.org/draft-04/schema#",
// "type": "object",
// "properties": {
// "a": {
// "type": "object",
// "properties": {
// "b": {
// "type": "integer"
// }
// },
// "required": ["b"]
// }
// },
// "required": ["a"]
// }
Default configuration values
[
'schema_id' => null,
'properties_required_by_default' => true,
'schema_uri' => 'http://json-schema.org/draft-04/schema#',
'schema_title' => null,
'schema_description' => null,
'schema_type' => null,
"items_schema_collect_mode" => 0,
'schema_required_field_names' => []
]
Advanced usage
$result = Generator::fromJson($this->addressJson1, [
'schema_id' => 'http://foo.bar/schema'
]);
/*
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://foo.bar/schema",
"type": "object",
"properties": {
"a": {
"type": "object",
"id": "http://foo.bar/schema/a",
"properties": {
"b": {
"id": "http://foo.bar/schema/a/b",
"type": "integer"
}
}
}
}
*/
// if you want items as strict lists instead of "anyOf" type
$result = Generator::fromJson($this->addressJson1, [
'schema_id' => 'http://bar.foo/schema2',
'schema_title' => 'coucouc',
'schema_description' => 'desc',
"items_schema_collect_mode" => Definition::ITEMS_AS_LIST,
]);
/*
{
"$schema":"http:\/\/json-schema.org\/draft-04\/schema#",
...
"properties": {
"phoneNumber":{
"id":"http:\/\/bar.foo\/schema2\/phoneNumber",
"type":"array",
"items": [
{"id":"http:\/\/bar.foo\/schema2\/0",...},
{"id":"http:\/\/bar.foo\/schema2\/1",...}}
*/
For more advanced usage, see tests/JSONSchemaGenerator/Tests/GeneratorTest.php
Testing
just run phpunit through
composer test
debug with
DEBUG=true composer test -- --filter="SearchWord" # for filtering *SearchWord* test case with output debugging
Roadmap
-
Adjust schema comparison using re-ordering of properties to compare two schema against their semantic values instead of just comparing their JSON form. For example
{ a: 1, b: 2 }, and{ b: 2, a: 1 }should result in the same schema. -
provide an option to allow null values in most fields
("type": ["string", "null"]}
evaisse/php-json-schema-generator 适用场景与选型建议
evaisse/php-json-schema-generator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 314.9k 次下载、GitHub Stars 达 18, 最近一次更新时间为 2017 年 08 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「generator」 「php」 「json」 「parser」 「schema」 「validation」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 evaisse/php-json-schema-generator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 evaisse/php-json-schema-generator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 evaisse/php-json-schema-generator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Memio's PrettyPrinter, used to generate PHP code from given Model
Kinikit - PHP Application development framework MVC component
ext-json wrapper with sane defaults
A package to cast json fields, each sub-keys is castable
swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations
Get wordpress nav menus and share the main site menus with the child sites.
统计信息
- 总下载量: 314.9k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 20
- 点击次数: 9
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-08-16