本文目录导读:

- Swagger/OpenAPI + 注解(最推荐)
- ApiGen - 通过PHPDoc生成
- Scribe(Laravel推荐)
- Daux.io - 静态文档生成
- 实战推荐方案
- CI/CD自动集成
- 推荐工具对比
- 最佳实践建议
对于PHP项目接口文档的自动生成,我推荐以下几种主流方案:
Swagger/OpenAPI + 注解(最推荐)
使用方式:
/**
* @OA\Get(
* path="/api/users/{id}",
* summary="获取用户信息",
* tags={"用户管理"},
* @OA\Parameter(
* name="id",
* in="path",
* required=true,
* @OA\Schema(type="integer")
* ),
* @OA\Response(
* response=200,
* description="成功返回用户信息",
* @OA\JsonContent(
* type="object",
* @OA\Property(property="id", type="integer"),
* @OA\Property(property="name", type="string"),
* @OA\Property(property="email", type="string")
* )
* )
* )
*/
public function getUser($id)
{
// 业务逻辑
}
工具链:
- zircote/swagger-php:生成OpenAPI规范
- Swagger UI:可视化文档界面
- L5-Swagger(Laravel专用)
ApiGen - 通过PHPDoc生成
/**
* 获取用户列表
*
* @api {get} /api/users 获取用户列表
* @apiName GetUsers
* @apiGroup User
* @apiVersion 1.0.0
*
* @apiParam {Number} [page=1] 页码
* @apiParam {Number} [limit=20] 每页数量
*
* @apiSuccess {Number} code 状态码
* @apiSuccess {String} message 提示信息
* @apiSuccess {Object[]} data 用户列表
*/
Scribe(Laravel推荐)
composer require --dev knuckles/laravel-scribe php artisan scribe:generate
自动生成:
- 基于路由和控制器自动提取
- 支持中间件、表单请求验证
- 生成Postman集合
- 生成Markdown/HTML文档
Daux.io - 静态文档生成
适合配合PHPDoc生成静态文档站点:
composer require --dev daux/daux.io
实战推荐方案
Laravel项目最佳实践:
- 安装L5-Swagger
- 在控制器添加注解
- 配置生成命令到CI/CD
# 安装 composer require --dev darkaonline/l5-swagger # 发布配置 php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider" # 生成文档 php artisan l5-swagger:generate
ThinkPHP/原生PHP方案:
- 使用zircote/swagger-php
- 配合Swagger UI使用
composer require --dev zircote/swagger-php # 生成swagger.json vendor/bin/openapi app/ -o public/swagger.json
CI/CD自动集成
# .github/workflows/docs.yml
name: Generate API Docs
on:
push:
branches: [main]
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Generate Docs
run: |
composer install
vendor/bin/openapi app/ -o docs/swagger.json
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
推荐工具对比
| 工具 | 学习成本 | 维护成本 | 输出格式 | 适用场景 |
|---|---|---|---|---|
| Swagger + 注解 | 中 | 低 | OpenAPI/HTML | 大型项目,需要标准化 |
| ApiGen | 低 | 中 | HTML/Markdown | 中小型项目 |
| Scribe | 低 | 低 | HTML/Postman | Laravel项目 |
| Daux.io | 低 | 中 | 静态网站 | 文档为主的项目 |
最佳实践建议
-
接口文档vs代码同步:
- 使用注解方式,文档紧贴代码
- 纳入代码审查流程
-
文档版本控制:
- 接口版本:
/api/v1/users - 文档版本:与API版本对应
- 接口版本:
-
自动化部署:
- CI/CD自动生成
- 部署到独立的文档服务器
-
团队规范:
- 制定统一的注解规范
- 编写注解模板
- 定期review文档质量
强烈推荐方案:Swagger/OpenAPI + zircote/swagger-php,这是PHP生态中最成熟、最通用的方案,支持Laravel、ThinkPHP、Symfony等主流框架,且能很好地融入CI/CD流程。