giann/schematics
Composer 安装命令:
composer require giann/schematics
包简介
Models that can be translated to JSON Schemas
README 文档
README
Translates PHP classes to JSON Schema and back.
Supported Drafts
Only commonly used drafts draft-04 and 2020-12 are supported.
Example
enum Sex: string { case Male = 'male'; case Female = 'female'; case Other = 'other'; } #[ObjectSchema] class Person { public function __construct( #[StringSchema(format: Format::Uuid)] #[Description('unique id of the person')] public string $id, #[ArraySchema( items: new StringSchema(), minContains: 1 )] public array $names, #[IntegerSchema(minimum: 0)] public int $age, #[StringSchema(enumClass: Sex::class)] public string $sex, // Inferred $ref to self public ?Person $father = null ) { } } enum Power: string { case Fly = 'weeeee!'; case Strong = 'smash!'; case Psychic = 'hummmm!'; } // Infer $allOf Person #[ObjectSchema] class Hero extends Person { public function __construct( string $id, array $names, int $age, string $sex, ?Person $father = null, // Infers string property public string $superName, #[StringSchema(enumClass: Power::class)] public string $power ) { parent::__construct($id, $names, $age, $sex, $father); } }
Results in the following JSON Schema:
{
"type": "object",
"$defs": {
"Person": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "unique id of the person",
"format": "uuid"
},
"names": {
"type": "array",
"items": {
"type": "string"
},
"minContains": 1
},
"age": {
"type": "integer",
"minimum": 0
},
"sex": {
"type": "string",
"enum": ["male", "female", "other"]
},
"father": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Person"
}
]
}
},
"required": ["id", "names", "age", "sex", "father"]
}
},
"allOf": [
{
"$ref": "#/$defs/Person"
}
],
"properties": {
"superName": {
"type": "string"
},
"power": {
"type": "string",
"enum": ["weeeee!", "smash!", "hummmm!"]
}
},
"required": ["superName", "power"]
}
Not Yet Supported
$dynamicRef$dynamicAnchor
giann/schematics 适用场景与选型建议
giann/schematics 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 6, 最近一次更新时间为 2024 年 06 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 giann/schematics 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 giann/schematics 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 10
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-06-24