mattyrad/openapi-serialize
最新稳定版本:1.0.0
Composer 安装命令:
composer require mattyrad/openapi-serialize
包简介
Serialize an object directly from Swagger-PHP attributes
README 文档
README
Serialize an object directly from swagger-php attributes.
composer require mattyrad/openapi-serialize
use OpenApi\Attributes as OpenApi; $sample = new class() { public function __construct( #[OpenApi\Property] public readonly int $two_plus_two = 4, ) {} #[OpenApi\Property(property: 'greeting')] public function getGreeting(): string { return 'hello world'; } }; $serialized = MattyRad\OpenApi\Serializer::serialize($sample); assert($serialized == ['two_plus_two' => 4, 'greeting' => 'hello world']);
This means that if you document all of your response data using swagger-php attributes, your API documentation will necessarily match the response format.
The need for tests to verify that a response matches OpenApi schema mostly becomes a formality- or altogether unnecessary.
Examples
use MattyRad\OpenApi\Serializer; use OpenApi\Attributes as OpenApi; abstract class HttpResource implements \JsonSerializable { final public function jsonSerialize(): array|string { return Serializer::serialize($this); } } final class Greeting extends HttpResource { public function __construct( #[OpenApi\Property] public readonly string $hello = 'world', ) {} } // return new JsonResponse(new Greeting)
Or a trait if you don't want to lock in to abstractions.
use MattyRad\OpenApi; trait SerializesFromOpenApi { final public function jsonSerialize(): array|string { return Serializer::serialize($this); } } final class Greeting implements \JsonSerializable { use SerializesFromOpenApi; public function __construct( #[OpenApi\Property] public readonly string $hello = 'world', ) {} } // return new JsonResponse(new Greeting)
统计信息
- 总下载量: 421
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-12-07