今天在編寫PHPDoc的導出文檔的時候發現一個很郁悶的錯誤,雖然這個warning不是什么重要錯誤,但是看著總是很不爽的。于是就去網上找了很多相關的資料,可是郁悶的是不知道是我用的PHPDoc版本太新(1.4的版本),還是說很多人都沒遇到這個問題,反正就是沒有相關的這個資料找到,只是找到了一些從PHPDocumentor官方網倒出來的關于@package的使用注意事項,然后就只能一條一條檢查,看了一個版本又一個版本,總算是被我解決了。
而且發現該方案可以解決@package之類相關的錯誤提示:
出現的問題:
1、no @package tag was used in a DocBlock for XXXXXXXXXXX
2、XXXXXX has no page-level DocBlock, use @package in the first DocBlock to create one
3、ERROR: XXXX can not have @package tag。。。。(具體的提示我忘記了,大題的意思是這里的文檔不能使用@package標簽)
出現上訴問題的主要原因是:頁面級的文檔塊注釋解析錯誤
頁面級文檔注釋:
必須是文件中的第一個文檔塊注釋,并且有@package標簽
該文檔快注釋之后如果是緊接著一段PHP代碼或是class類申明,必須用文檔塊注釋隔開(也就是說頁面級文檔塊注釋之后不能緊接著代碼片段)
比如情況:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
< span style = "color: #ff0000" >< strong >案例一: </ strong ></ span > < div class = "codetitle" >< span >< a data = "84449" class = "copybut" id = "copybut84449" >< u >復制代碼</ u ></ a ></ span > 代碼如下:</ div >< div class = "codebody" id = "code84449" > /** * 這個是一個頁面級文檔塊注釋 *@package haha * */ class test { } </ div > 以上的情況就會出現上述2的錯誤信息 解決該案例的方案是給class重新聲明一個文檔塊注釋 < div class = "codetitle" >< span >< a data = "76163" class = "copybut" id = "copybut76163" >< u >復制代碼</ u ></ a ></ span > 代碼如下:</ div >< div class = "codebody" id = "code76163" > /** * 這個是一個頁面級文檔塊注釋 *@package haha * */ /** * 我是test類 */ class test { } </ div > *********************************************** < span style = "color: #ff0000" >< strong >案例二:</ strong ></ span > < div class = "codetitle" >< span >< a data = "54137" class = "copybut" id = "copybut54137" >< u >復制代碼</ u ></ a ></ span > 代碼如下:</ div >< div class = "codebody" id = "code54137" > /** * 這個是一個頁面級文檔塊注釋 */ /** * 這個是一個頁面級文檔塊注釋 *@package haha * */ class test { } </ div > 會出現如上問題中的1/2的情況。 解決方案也是如案例一的解決方案一樣 *********************************************** < span style = "color: #ff0000" >< strong >案例三: </ strong ></ span > < div class = "codetitle" >< span >< a data = "93658" class = "copybut" id = "copybut93658" >< u >復制代碼</ u ></ a ></ span > 代碼如下:</ div >< div class = "codebody" id = "code93658" > /** * 這個是一個頁面級文檔塊注釋 *@package haha * */ define('yyyy', 'hahha'); </ div > 就會出現如上所說的情況3Error。 解決方案也是如出一則: < div class = "codetitle" >< span >< a data = "75095" class = "copybut" id = "copybut75095" >< u >復制代碼</ u ></ a ></ span > 代碼如下:</ div >< div class = "codebody" id = "code75095" > /** * 這個是一個頁面級文檔塊注釋 *@package haha */ /** * 我是常量 */ define('yyyy', 'hahha'); </ div > |
如果所寫的文檔塊正確,就不會出現@package相關的錯誤了。
注:
1、在注釋中需要注意,任何不是/** */類型的注釋都不會被PHPDoc所解析。而且/** */中的多行注釋前面不是以*開頭的注釋行也不會被解析。
2、如果聲明了標簽卻沒有給出相關的標簽必選項就會發出一個Error信息,比如@var 后面沒有變量,@return后面沒有返回類型,都將會出現Error錯誤。解決方式就是補充完整,或是如果沒有的話就移除。
另外,提供一個命令行方式下的命令文件執行,自動執行Doc文檔生成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@Rem: 命令行格式自動導出PHPDoc文檔 @Rem: author: 肖肖 x_824@sina.com @ echo off @ echo ******************************************************************************* @ echo 自動導出文檔使用說明: @ echo 需要安裝命令行的PHPDOCumentor,安裝方式是用pear安裝pear install PhpDocumentor即可 @ echo 1、option:設置導出文檔的格式,命令行格式支持四種格式:默認為第一種格式 @ echo ###1】、HTML:frames: default @ echo ###2】、HTML:Smarty: default @ echo ###3】、CHM: default : default @ echo ###4】、PDF: default : default @ echo 2、dir:需要執行導出文檔的目錄、 @ echo 3、outputDir: 導出的文檔存放目錄 @ echo 4、title:導出的文檔的標題 @ echo ******************************************************************************* @set option=HTML:frames: default @set dir=D:\PHPAPP\test @set outputDir=D:\PHPAPP\doc @set id="codetool">
注:該命令需要安裝命令行下的PHPDocumentor包,安裝方式用pear安裝。 謹此! 以上這篇完美解決phpdoc導出文檔中@package的warning及Error的錯誤就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。 延伸 · 閱讀
精彩推薦
|