reinfi / openapi-models
从openapi定义生成PHP模型
Requires
- php: >= 8.2
- marcelthole/openapi-merge: ^2.0
- michaelpetri/typed-input: ^1.3
- nette/php-generator: ^4.1
- ocramius/package-versions: ^2.8
- php-di/php-di: ^7.0
- php-openapi/openapi: ^2.0
- symfony/console: ^6.0 | ^7.0
- webmozart/glob: ^4.6
Requires (Dev)
- dg/bypass-finals: ^1.5
- mikey179/vfsstream: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- symplify/easy-coding-standard: ^12.1.8
- dev-main
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.7.0
- v0.6.1
- v0.6.0
- v0.5.7
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.0
- v0.1.0
- dev-allow-array-of-array
- dev-one-of-array
- dev-fix-junit-formatter
- dev-support-all-of-in-dictionary
- dev-fix-adding-class-before-imports
- dev-ignore-required-as-bool
- dev-fix-import-order
- dev-support-datetime-array
- dev-support-datetime
- dev-seperate-schema-into-own-namespace
- dev-add-tests
This package is auto-updated.
Last update: 2024-09-15 19:34:35 UTC
README
此库不提供任何客户端或服务器实现用于您的open api定义。它只是生成您模式中定义的模型。
此库可能不是所有openapi定义的完整特性。如果您缺少某个特性,请提交一个问题。
原因?
有一些常见的open api生成器,如 JanePHP 或 OpenAPI Generator,但由于它们需要向后兼容,它们创建了旧的PHP语法。
- 无只读对象
- 无构造器提升属性
- 无类型属性,除PHPDoc外
这就是为什么这个库存在,就是为了简单地用新的PHP语法生成模型。
安装
使用composer将其作为开发依赖项安装。
composer require --dev reinfi/openapi-models
用法
默认配置文件是 openapi-models.php
。
您的配置文件应返回一个包含以下设置的数组
return [ 'paths' => [__DIR__ . '/spec'], # array of path to check for openapi files 'outputPath' => __DIR__ . '/output', # output directory 'namespace' => 'Api', # namespace for generated classes, can be empty 'clearOutputDirectory' => true, # to remove all files in output directory, default is false 'dateTimeAsObject' => false, # date/date-time definition will be `string` otherwise `DateTimeInterface`. 'dateTimeFormat' => 'Y-m-d H:i:s', # format for serialize of date time fields ];
生成
要生成您的文件,只需运行 php vendor/bin/openapi-models generate
。
如果您想将配置存储在其他位置,您需要向命令提供文件名。
php vendor/bin/openapi-models generate --config spec/openapi-models.php
验证
要验证您的文件,即如果规范与生成的文件匹配,您可以运行 php vendor/bin/openapi-models validate
。
请确保您使用与生成命令相同的配置文件。
类型
此库不支持来自open-api规范的mixed
类型。因此,您必须始终在规范中设置一个类型。
日期或DateTime
以下模式具有日期/日期时间属性。
components: schemas: Test1: type: object required: - date properties: date: type: string format: date dateTime: type: string format: date-time
默认情况下,将字段生成为string
类型,因为这将不会要求类进行序列化的任何逻辑。
您可以将配置dateTimeAsObject
更改为true
,然后这些字段将是DateTimeInterface
类型。
为这些类添加了序列化函数,以支持本机json_encode
。如果您不使用本机json_encode,您可能需要提供一个自己的实现以满足open api规范。
date
的默认格式是Y-m-d
,date-time
类型的默认格式是Y-m-d\TH:i:sP
(RFC3339),但您可以进行配置。
'dateFormat' => 'Y-m-d', 'dateTimeFormat' => 'Y-m-d H:i:s',
这只是为了方便,如果您不想处理时区或只需要不同的格式。