首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

phpDocumentor 完全指南:從安裝到規範註釋的最佳實踐

     編輯:PHP 相關知識

什麼是 phpDocumentor?

phpDocumentor(舊稱 PHPDoc)是 PHP 專案的標準文件產生工具,從原始碼的 DocBlock 註釋自動產生 HTML/PDF/CHM 等格式的 API 文件。它強制開發者撰寫結構化註釋,提升程式碼可讀性與維護性。

安裝與執行

方式 1:Composer 全域安裝(推薦)

composer global require phpdocumentor/phpdocumentor
# 確保 ~/.composer/vendor/bin 在 PATH 中
phpdoc -d ./src -t ./docs/api

方式 2:專案本地安裝

composer require --dev phpdocumentor/phpdocumentor
./vendor/bin/phpdoc -d ./src -t ./docs/api

方式 3:Docker 執行(無污染環境)

docker run --rm -v $(pwd):/data phpdoc/phpdoc:latest \
  -d /data/src -t /data/docs/api

常用參數速查

DocBlock 註釋規範全攻略

基本結構

/**
 * 簡短描述(單行,結尾有句點)
 *
 * 詳細描述(可多行,支援 Markdown)
 * 
 * @tag 值
 * @tag 參數1 參數2 描述
 */

檔案層級註釋

<?php
/**
 * 使用者管理服務
 *
 * 處理使用者註冊、認證、授權等核心業務邏輯
 *
 * @package App\Services
 * @author  張三 <zhangsan@example.com>
 * @version 2.1.0
 * @license MIT
 */

類別註釋

/**
 * 使用者實體類別
 *
 * 代表系統中的使用者,包含基本資料與認證相關屬性
 *
 * @package App\Models
 * @property int    $id
 * @property string $email
 * @property string $name
 * @property Carbon $created_at
 * @method  static User find(int $id)
 * @method  static User where(string $column, mixed $value)
 */
class User extends Model {
    // ...
}

屬性註釋

class User {
    /**
     * 使用者唯一識別碼
     * @var int
     * @readonly
     */
    protected $id;

    /**
     * 電子郵件(唯一)
     * @var string
     * @validate email|unique:users
     */
    protected $email;

    /**
     * 角色關聯
     * @var Role|Collection
     */
    protected $roles;
}

方法/函數註釋(核心)

/**
 * 依條件查詢使用者
 *
 * @param array $filters 過濾條件 ['email' => '...', 'status' => 1]
 * @param int   $limit   最大筆數(預設 15)
 * @param string[] $columns 要選取的欄位(預設 ['*'])
 * @return User[]|Collection 使用者集合
 * @throws \InvalidArgumentException 當 $filters 為空陣列
 * @example
 *   $users = $service->findUsers(['status' => 1], 10);
 * @see UserRepository::query()
 * @deprecated 2.0 使用 UserRepository 取代
 * @todo 加入快取機制
 */
public function findUsers(array $filters = [], int $limit = 15, array $columns = ['*']) {
    if (empty($filters)) {
        throw new \InvalidArgumentException('Filters cannot be empty');
    }
    // ...
}

常用標籤完整對照表

參數說明範例
-d, --directory掃描目錄(可多個,逗號分隔)-d ./src,./lib
-t, --target輸出目錄-t ./docs/api
-f, --filename指定檔案(可多個)-f ./src/App.php
--ignore忽略路徑/檔案--ignore ./src/Tests,./vendor
--template輸出模板--template=clean,abstract
--encoding原始碼編碼--encoding=UTF-8
--title文件標題--title="My Project API"

型別表示法規範(PSR-5 / PHPStan 相容)

標籤用途適用對象範例
@var變數/屬性型別property, variable@var string|null
@param參數說明method, function@param int $id 使用者ID
@return回傳值說明method, function@return User|false
@throws拋出例外method, function@throws \Exception 描述
@author作者file, class, method@author Name <email>
@version版本file, class@version 1.2.3
@since起始版本class, method@since 2.0
@deprecated棄用說明all@deprecated 2.0 Use newMethod()
@see參考連結all@see OtherClass::method()
@link外部連結all@link https://example.com
@package邏輯分組file, class@package App\Services
@subpackage子分組class@subpackage Auth
@property魔術屬性class@property string $name
@method魔術方法class@method static User find()
@mixinMixin Traitclass@mixin SoftDeletes
@template泛型參數class (PHP 7.4+)@template T of Model
@phpstan-*PHPStan 型別提示all@phpstan-param array<string> $ids

最佳實踐檢查清單

  • [ ] 所有 public/protected 類別、方法、屬性皆有 DocBlock
  • [ ] 型別宣告與實際程式碼一致(搭配 PHPStan 靜態分析驗證)
  • [ ] @param/@return 描述「什麼情況回傳什麼」,而非重複型別
  • [ ] 例外情況完整標註 @throws
  • [ ] 棄用功能標註 @deprecated 並指引替代方案
  • [ ] 複雜邏輯補充 @example 或詳細描述
  • [ ] 執行 phpdoc --validate 檢查語法錯誤
  • [ ] CI/CD 整合文件自動產生與發布

現代替代方案

型別表示法說明
基本型別int, string, bool, float, array, object, resource, callable, iterable小寫
可為 null?string 或 string|null推薦前者
陣列細節array<int, User>, string[], list<int>PHPStan/PSR-5
聯合型別string|int|false用 | 分隔
物件/類別\Namespace\ClassName, ClassName, self, static建議完整命名空間
Callablecallable(string, int): bool含簽章
物件形狀object{id: int, name: string}PHPStan

優秀的文件不是事後補充,而是開發過程的副產品。養成「寫代碼前先寫 DocBlock」的習慣,配合靜態分析工具驗證,才能讓文件真正成為專案的資產而非負擔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
工具特點適用場景
phpDocumentor標準、成熟、模板豐富傳統專案、需完整 HTML 文件
SamiSymfony 風格、速度快、Git 整合大型專案、多版本文件
DoctumSami 分支、支援 PHP 8+ 屬性現代 PHP 專案
IDE 內建即時提示、跳轉、重構日常開發(PhpStorm, VS Code + Intelephense)