riley19280 / laravel-rules-to-schema
将Laravel验证规则解析为Json Schema
v0.5.0
2024-09-05 20:51 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- riley19280/fluent-json-schema: ^1.2.1
- spatie/invade: ^2.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
README
为您的Laravel规则创建json schema
先决条件
建议在您的应用程序中使用FormRequest
类来使用此包。这允许轻松提取规则对象并将它们传递给此包。
您仍然可以通过传递规则数组来使用此包,但这稍微有些麻烦。
安装
您可以通过composer安装此包
composer require riley19280/laravel-rules-to-schema
并使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-rules-to-schema-config"
用法
use \Illuminate\Foundation\Http\FormRequest; $schema = LaravelRulesToSchema::parse(FormRequest|array $rules): FluentSchema $schema->compile(); // Returns an array representation of the json schema
自定义
JSON Schema表示
此包依赖于riley19280/fluent-json-schema来构建和表示JSON schemas。有关如何使用和配置从规则解析器返回的对象的详细信息,请参阅该包的文档。
为自定义规则注册模式
可以通过提供规则名称或类名称在配置文件中注册自定义规则的JSON Schema定义。
类型可以是任何简单的JSON Schema类型(数组、布尔值、整数、null、数字、对象、字符串)。如果需要更复杂类型,您可以提供实现LaravelRulesToSchema\Contracts\HasJsonSchema
的类名称。
// config/rules-to-schema.php 'custom_rule_schemas' => [ // \CustomPackage\CustomRule::class => \Support\CustomRuleSchemaDefinition::class, // \CustomPackage\CustomRule::class => 'string', // \CustomPackage\CustomRule::class => ['null', 'string'], ],
扩展规则解析器
如果您想进一步自定义或调整规则的解析方式,可以在配置文件中添加额外的解析器。每个解析器按照在配置文件中定义的顺序为每个规则运行。自定义解析器必须实现LaravelRulesToSchema\Contracts\RuleParser
接口。
// config/rules-to-schema.php 'parsers' => [ ... \CustomPackage\CustomParser::class, ],
面向包开发者的工具
如果您的包包含自定义规则,您还可以将类型作为包的一部分提供。
在服务提供者中,您可以使用以下方法以编程方式注册规则或解析器
LaravelRulesToSchema::registerCustomRuleSchema(CustomRule::class, CustomRuleSchemaDefinition::class); LaravelRulesToSchema::registerParser(CustomParser::class);
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
鸣谢
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。