用過IDE或看過其他源碼的小伙伴們應該都見過類似下面這樣的注釋
/** * 遞歸獲取所有游戲分類 * @param int $id * @return array */
看得多了就大概知道了一些規律。為了使自己的代碼更加規zhuang范bi,也開始有樣學樣地寫著這些注釋
其實這種注釋格式是有自己的名字的,它就叫——
PHPDOC
PHPDoc 是一個 PHP 版的 Javadoc。它是一種注釋 PHP 代碼的正式標準。它支持通過類似 phpDocumentor 這樣的外部文檔生成器生成 API 文檔,也可以幫助一些例如 Zend Studio, NetBeans, ActiveState Komodo Edit and IDE 和 Aptana Studio 之類的 集成開發環境 理解變量類型和弱類型語言中的其他歧義并提供改進的代碼完成,類型提示和除錯功能。
PHPDoc 可同時支持 面向對象 的和 面向過程的 代碼。
以上摘自維基百科
簡單來說PHPDOC可以用來自動生成API文檔。主流的IDE都會識別它,并在你coding中給予你相應的智能提示。使用PHPDOC有以下好處
-
讓你的代碼更加規zhuang范bi,更易于理解
-
讓你的IDE更懂你的代碼,更加智能的提示和自動完成
-
如需API手冊,可使用phpDocumentor來自動生成
還等什么?快跟我一起來學習又好用又有逼格的phpDoc吧!
有關phpDoc的完整文檔位于phpDocumentor官網。以下內容由我個人理解、提煉而來,而且我也還在學習中,如有失誤還請各位多多指教
@api
表示這是一個提供給第三方使用的API接口
@author
作者
格式@author [名稱] [<郵箱>]
例如@author mokeyjay <[email protected]>
@copyright
版權聲明。例如很多網站底部都有
格式@copyright [描述]
例如@copyright 1949-2016 China
@deprecated
不建議使用的、已過期的、將被刪除的
格式@deprecated [<版本號>] [<描述>]
例如@deprecated 1.0.0 新版本將不再包含此函數
如果它是被其他方法所取代了,建議添加@see標記
@example
例子、示例、用例。也可表示方法返回值的例子
格式@example [位置] [<起始行號> [<行數>] ] [<描述>]
例如@example demo.php 10 3 使用示例
@filesource
沒看懂,如果你們看懂了請告訴我。傳送門
@global
全局變量
格式@global [類型][名稱] @global [類型][描述]
我懷疑這里是源文檔打錯了,大概應該是
格式@global [類型][名稱][描述]
類型@global string name 用戶名
@ignore
忽略
格式@ignore [<描述>]
例如你在if和else的語句塊中定義分別同一個變量但值不同時,可以通過此標記讓phpDocumentor忽略其中一個,以免生成重復的文檔。例如
if ($ostest) {
/**
* This define will either be 'Unix' or 'Windows'
*/
define("OS","Unix");
} else {
/**
* @ignore
*/
define("OS","Windows");
}
@internal
僅限內部使用的
格式@internal [描述]
例如@internal 僅限內部測試使用
@license
協議,很常見的啦
格式@license [<url>] [名稱]
例如@license GPL
@link
鏈接,可用于輔助說明、引用文檔等
格式@link [url] [<描述>]
例如@link http://g.cn 不懂滾去問谷歌,別來煩我
@method
方法。這是用在類注釋里的標記。特別適合一些動態加載的類,IDE無法自動提示出來,這時就可以通過寫@method標記來告訴IDE我這類里有哪些方法
格式@method [返回值類型] [名稱]([[類型] [參數]<, ...>]) [<描述>]
例如@method string google(string $question) 向谷歌提問,返回答案內容
@package
包。但php沒有包,所以就用來表示命名空間
例如@package yii\base\db
@param
參數,用于函數和方法注釋里的標記
格式@param [Type] [name] [<description>]
例如@param string title 文章標題
@property
類屬性,與@method類似,可以告訴IDE我這類里有哪些屬性
格式@property [Type] [name] [<description>]
例如@property int id 用戶id
@property-read
只讀的屬性。例如__get魔術方法能夠取到的屬性
格式@property-read [Type] [name] [<description>]
例如@property-read int id 用戶id
@property-write
只可寫的屬性。例如__set魔術方法能夠設置的屬性
格式@property-write [Type] [name] [<description>]
例如@property-write string name 用戶名
@return
返回值
格式@return [類型] [<描述>]]
例如@return array 結果數組
@see
參考,類似@link,可與@deprecated聯動
格式@see [url或完整方法名] [<描述>]
例如@see \yii\base\db::tableName() 舊方法table_name已棄用,請使用此方法替代
@since
從xx版本開始。例如從1.0之后添加了xx功能、刪除了xx參數等
格式@since [1.0.0] [<描述>]
例如@since 1.0.2 添加了$b參數
@source
沒看懂,如果你們看懂了請告訴我。傳送門
@throws
可能會拋出的錯誤類型
格式@throws [類型] [<描述>]
例如@throws LifeException 沒錢了,好想死啊
@todo
待辦。提示自己或他人還需要做些什么
格式@todo [描述]
例如@todo 這個類還沒做異常處理
@uses
使用
格式@uses [完整方法名] [<描述>]
例如@uses \yii\base\db::$count 使用此屬性計數
@var
變量
格式@var [類型] [變量名] [<描述>]
例如@var int id 用戶id
@version
版本號
格式@version [<載體>] [<描述>]
例如@version 1.0.1 2016-07-03更新
或者@version GIT:1f3197d01 來自GIT分支1f3197d01