tomaz-kusy / annotations-to-json-schema
将 Symfony 验证器注解转换为 json schema
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-29 05:49:43 UTC
README
根据 PHP 文件中的注解生成 JSON Schema 文档。
开发阶段版本。
动机
许多人(例如我)使用 PHP 在客户端和服务器之间传输对象(DTO)。在发送之前,对象必须序列化(例如,转换为 XML 或 JSON)。接收此类对象后,服务器执行反序列化。为此,它需要知道如何执行转换。如果客户端和服务器使用相同的元数据,通常没有问题。如果序列化数据的结构不匹配服务器的元数据,例如,您将获得字符串而不是预期的对象数组。在这种情况下,反序列化器将报告异常并停止进一步处理。最流行的序列化器(Symfony、JMS)将返回关于问题原因的非常简短的信息。
解决方案
解决方案可能是验证 JSON 文档,然后再进行反序列化。为了验证文档,我们可以使用 JSON Schema 文档。这个包允许根据现有的 PHP 实体创建 JSON Schema 文档。
用法
基本实体应使用 PSR-4 兼容的路径。
待续...
独立
Usage: convert2jschema [options] [--] <className> Arguments: className Entry class Options: -c, --config[=CONFIG] Config file -r, --root-namespace[=ROOT-NAMESPACE] RootNamespace -o, --destination-path[=DESTINATION-PATH] Output directory
示例 config.yaml
# config.yml a2jschema: rootNamespace: TKusy\JSchema\Tests\Assets\ idPrefix: https://json-schema.fullstack.org.cn/schema/ destination: path: ~ pathTemplate: "%s.schema.json"
示例
bin/convert2jschema -c config.yaml TKusy\\JSchema\\Tests\\Assets\\Main\\Referral
- 使用 config yaml 生成作为实体“兄弟”的 schemas。
bin/convert2jschema --root-namespace=TKusy\\JSchema\\Tests\\Assets\\ --destination-path=./output/ Main\\Referral
- 将 schemas 写入 ./output
目录。
在 PHP 中
待做...