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

使用PHP Attributes添加OpenAPI 3.0自定义x-*扩展属性的问题

解决PHP Attributes中添加OpenAPI自定义x-前缀属性的问题

这里提供两种可行方案来处理PHP变量命名限制与OpenAPI自定义属性的冲突:

方案1:使用swagger-php官方的Extension属性

swagger-php专门提供了Extension属性来适配OpenAPI的自定义扩展(x-*格式属性),完全避开PHP变量名不能含连字符的限制:

use OpenApi\Attributes as OA;

#[OA\Get(
    path: "/api/example",
    summary: "示例接口",
    extensions: [
        new OA\Extension(
            property: "x-custom",
            value: "自定义属性内容"
        )
    ]
)]
public function exampleAction() {
    // 接口业务逻辑
}

生成的OpenAPI文档会自动包含"x-custom": "自定义属性内容"字段,完全符合规范要求。

方案2:通过数组或带引号的参数传递

部分版本的swagger-php支持直接通过数组或带引号的参数名传递自定义属性,利用PHP数组键名允许含连字符的特性:

数组形式

use OpenApi\Attributes as OA;

#[OA\Get(
    path: "/api/example",
    summary: "示例接口",
    x: [
        "custom" => "自定义属性内容"
    ]
)]
public function exampleAction() {
    // 接口业务逻辑
}

带引号的参数名形式

use OpenApi\Attributes as OA;

#[OA\Get(
    path: "/api/example",
    summary: "示例接口",
    'x-custom' => "自定义属性内容"
)]
public function exampleAction() {
    // 接口业务逻辑
}

注意:这种方式存在版本兼容性问题,建议先在当前使用的swagger-php版本中测试验证。

优先级建议

优先选择方案1,因为Extension是swagger-php官方推荐的自定义扩展处理方式,兼容性最强,也更贴合OpenAPI规范的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:50:33