PHP项目项目文档如何自动提取生成

wen PHP项目 28

本文目录导读:

PHP项目项目文档如何自动提取生成

  1. 基于 PHPDoc 注解的文档生成(最常用)
  2. 基于代码分析的工具
  3. 框架专用工具
  4. 自动化与CI/CD集成
  5. Markdown格式文档工具
  6. 最佳实践建议

为PHP项目自动生成文档,通常有几种主流方案,以下按工具类型生成方式进行分类说明:


基于 PHPDoc 注解的文档生成(最常用)

phpDocumentor

这是PHP最经典的文档生成工具,通过解析代码中的PHPDoc注释生成API文档。

安装方式:

# 全局安装(推荐)
composer global require phpdocumentor/phpdocumentor
# 或仅在项目中安装
composer require --dev phpdocumentor/phpdocumentor

使用方式:

# 生成HTML文档(会扫描当前目录所有PHP文件)
php vendor/bin/phpdoc
# 指定源目录和输出目录
php vendor/bin/phpdoc -d ./src -t ./docs

示例代码注释:

<?php
/**
 * 用户管理类
 *
 * 处理用户注册、登录、信息管理等功能
 *
 * @package App\Service
 * @author 作者名
 * @version 1.0.0
 */
class UserService
{
    /**
     * 用户注册
     *
     * @param string $username 用户名
     * @param string $password 密码(已加密)
     * @return array{id: int, token: string} 返回用户ID和Token
     * @throws \InvalidArgumentException 当用户名已存在时
     */
    public function register(string $username, string $password): array
    {
        // 业务逻辑...
    }
}

生成效果:

  • 类、方法、属性的完整文档
  • 支持自定义模板
  • 可以生成HTML、PDF、CHM等格式

Sami(现已更名为 "phpDocumentor 3")

比传统phpDocumentor更现代的替代品,支持Symfony、Laravel等框架。

配置示例:

<?php
// sami.php
use Sami\Sami;
use Symfony\Component\Finder\Finder;
$iterator = Finder::create()
    ->files()
    ->name('*.php')
    ->in(__DIR__ . '/src')
;
return new Sami($iterator, [                => 'My PHP Project API',
    'build_dir'            => __DIR__ . '/docs/build',
    'cache_dir'            => __DIR__ . '/docs/cache',
    'default_opened_level' => 2,
]);

运行:

php vendor/bin/sami.php update sami.php

基于代码分析的工具

Doxygen

虽然主要面向C++,但通过配置也可以很好支持PHP(需要将PHP文件当作C风格解析)。

配置示例(Doxyfile):

INPUT                  = ./src
FILE_PATTERNS          = *.php
RECURSIVE              = YES
EXTRACT_ALL            = YES
OPTIMIZE_OUTPUT_FOR_C  = NO  

特点:

  • 支持调用图、继承图等图表生成
  • 支持多种输出格式(HTML、PDF、LaTeX)
  • 对PHP支持不如专用工具完善

框架专用工具

Laravel专属:Laravel IDE Helper

虽然主要用于IDE辅助,但配合阅读工具也可作为文档使用。

composer require --dev barryvdh/laravel-ide-helper
# 生成Facade、Model等文档
php artisan ide-helper:generate
php artisan ide-helper:models

Symfony专属:ApiDoc Bundle

用于生成REST API文档:

composer require --dev nelmio/api-doc-bundle

配置路由注解后访问 /api/doc 即可看到Swagger风格的文档。


自动化与CI/CD集成

GitHub Actions + phpDocumentor

# .github/workflows/docs.yml
name: Generate Documentation
on:
  push:
    branches: [ main ]
jobs:
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'
      - name: Install dependencies
        run: composer install --no-interaction
      - name: Generate docs
        run: vendor/bin/phpdoc -d src -t docs
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs

GitLab CI

# .gitlab-ci.yml
stages:
  - docs
generate-docs:
  stage: docs
  script:
    - composer install
    - vendor/bin/phpdoc -d src -t public/docs
  artifacts:
    paths:
      - public/docs
  only:
    - main

Markdown格式文档工具

phpDocumentor Markdown 模板

为phpDocumentor配置Markdown输出:

composer require --dev phpdocumentor/template-markdown
php vendor/bin/phpdoc --template="markdown"

API Platform + OpenAPI

如果你的项目是REST API,可以集成OpenAPI/Swagger:

composer require api-platform/api-pack

自动生成符合OpenAPI规范的API文档(JSON/YAML格式),再通过Swagger UI展示。


最佳实践建议

场景 推荐工具 说明
传统PHP项目 phpDocumentor 最成熟,社区支持好
Laravel项目 Laravel IDE Helper + phpDocumentor IDE辅助+完整文档
REST API项目 NelmioApiDocBundle / API Platform 自动生成接口文档
需要CI集成 phpDocumentor + GitHub Actions 自动部署到GitHub Pages
需要Markdown输出 phpDocumentor Markdown模板 用于导入到Wiki系统

实施步骤:

  1. 团队统一PHPDoc注释规范(推荐PSR-5/PSR-19标准)
  2. 在项目中配置文档生成工具
  3. 集成到CI/CD流水线,每次合并自动生成
  4. 将生成的文档部署到内部服务器或GitHub Pages

注意事项:

  • PHPDoc注释质量直接影响文档质量
  • 建议在Pre-commit钩子中检查注释完整性
  • 对于大型项目,文档生成可能耗时较长,建议增量生成

抱歉,评论功能暂时关闭!