Lzh on GitHub
命名空间 (Namespace)
使用命名空间别名可以简化输入并提高可读性。
所有属性都在 OpenApi\Attributes 命名空间中。

嵌套 (Nesting)

与注解类似,属性可以是顶层或嵌套的。然而,如果没有歧义,属性可以放在同一级别。然后 swagger-php 会根据定义的父/子关系规则来合并这些属性。

示例

嵌套的:

#[OA\Get(
    path: '/api/users',
    responses: [
        new OA\Response(response: 200, description: 'AOK'),
        new OA\Response(response: 401, description: 'Not allowed'),
    ]
)]
public function users() { /* ... */ }

不嵌套的:

#[OA\Get(path: '/api/users')]
#[OA\Response(response: 200, description: 'AOK')]
#[OA\Response(response: 401, description: 'Not allowed')]
public function users() { /* ... */ }

这可以根据嵌套的深度使代码更简单、更易读。

仅限顶层
属性的自动合并只在顶层起作用——在本例中,即 users() 方法。