You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Swagger Inspector生成的YAML结果转换为PHP attributes?

Swagger Inspector生成YAML转PHP OpenAPI Attributes实现方案

Swagger Inspector本身没有内置直接导出PHP Attributes格式文档的功能,你可以通过以下两种方式实现转换:

  • 基于现有依赖自动转换
    如果你项目里已经安装了zircote/swagger-php(也就是写OpenAPI注解用的属性依赖),它本身自带OpenAPI YAML/JSON文件转PHP Attributes代码的能力,操作步骤如下:

    1. 把Swagger Inspector生成的完整YAML内容保存到本地文件,例如命名为inspector-generated.yaml
    2. 在项目根目录执行转换命令:
    ./vendor/bin/openapi --generate-attributes --input inspector-generated.yaml --output ./src/Api/
    
    1. 生成的代码会自动匹配OA\Post、OA\RequestBody、OA\Property这类标准属性结构,你只需要根据业务逻辑调整对应承载类的类名、补全Swagger Inspector没抓取到的必填标识、参数校验规则即可,基础的路径、请求方法、数据结构都会自动生成,不需要逐行手写。
  • 手动转换映射规则(自动生成有偏差时可手动调整)
    YAML结构和PHP Attributes的对应关系非常固定,手动调整时按以下规则映射即可:

    • YAML中paths下的一级键值,对应OA\Get/OA\Post等请求方法属性的path参数,HTTP方法名直接对应属性类名
    • YAML中requestBody节点,直接对应new OA\RequestBody()实例,节点下的description、required等字段直接作为实例的构造参数传入
    • YAML中content下的媒体类型键(如application/json、multipart/form-data),对应new OA\MediaType()实例的mediaType参数
    • YAML中schema.properties下的每一个字段,对应一个new OA\Property()实例,字段名、字段类型直接照搬YAML配置即可,数组类型的嵌套items节点按相同规则递归生成对应结构。

以下是对应提供的YAML片段转换后的参考代码,和期望的格式完全匹配:

<?php

use OpenApi\Attributes as OA;

#[OA\Post(
    path: '/api/package',
    description: 'Auto generated using Swagger Inspector',
    requestBody: new OA\RequestBody(
        content: new OA\MediaType(
            mediaType: 'application/json',
            schema: new OA\Schema(
                type: 'object',
                properties: [
                    new OA\Property(
                        property: 'software',
                        type: 'array',
                        items: new OA\Items(
                            type: 'object',
                            properties: [
                                new OA\Property(
                                    property: 'package',
                                    type: 'string'
                                ),
                                new OA\Property(
                                    property: 'version',
                                    type: 'string'
                                )
                            ]
                        )
                    )
                ]
            )
        )
    )
)]
class PackageApi
{
}

内容的提问来源于stack exchange,提问作者L01C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:15:42