2015-12-02 18 views
3

我想整理一個PHPDoc僅部分使用的大函數包含文件。有沒有PHPDoc的一些功能,如使用現有註釋自動添加PHPDoc

function name($var1,$var2){ // explanation what it does 
    # ... 
} 

和一些地方的PHPDoc的存在,但不完全像一些變量缺失:

/** 
    * explanation 
    * 
    * @param boolean $var1 foo foo foo 
    * 
    * @return null 
    */ 
function name2($var1,$var2){ 
    # ... 
} 

或只是

/** explanation 
    */ 
function name3($var1,$var2){ 
    # ... 
} 

怎麼可能增加所有缺少變量定義和返回值,使用正確的「未知」標籤添加?

它可以分析每個函數,如果它有一個返回值,它應該轉換已經存在的註釋(在每個函數後面)並在PHPDoc中使用它們。

我知道你將不得不手動檢查結果,但它將是非常有用的生成骨架與已存在的數據。

+0

您正在使用哪種框架或CMS?還是核心PHP? – Monty

+0

它只是核心PHP – rubo77

回答

2

您可以使用Reflection,token_get_all的組合,它使用Zend的詞法掃描器將字符串解析爲PHP lanugage tokens以及相當可能的正則表達式。

與反思的問題是,一些方法,如ReflectionFunctionAbstract::getReturnType僅適用於PHP 7

在PHP 5+你可以使用ReflectionFunctionAbstract::getParametersReflectionFunctionAbstract::getDocComment

如果沒有文檔塊,你可以得到的函數開始和結束行分別爲ReflectionFunctionAbstract::getStartLineReflectionFunctionAbstract::getEndLine,將源塊複製到一個字符串中,並使用token_get_all獲取一組PHP標記以分別進行分析。在PHP 5.6

反思例如:

<?php 

/** 
* explanation 
* 
* @param boolean $var1 foo foo foo 
* 
* @return null 
*/ 
function test($var1, $var2) { 

} 

echo ReflectionFunction::export('test', true); 

輸出:

/** 
* explanation 
* 
* @param boolean $var1 foo foo foo 
* 
* @return null 
*/ 
Function [ <user> function test ] { 
    @@ index.php 10 - 12 

    - Parameters [2] { 
    Parameter #0 [ <required> $var1 ] 
    Parameter #1 [ <required> $var2 ] 
    } 
} 
+0

聽起來很多工作。我寧願考慮通過'awk'來解析php文件,並以這種方式檢索註釋和變量名稱 – rubo77

+0

@ rubo77是的,沒有完整的反思就很難。但'awk'也不會幫助你返回類型。 – aergistal

+0

這將有助於已經有一個解決方案,只有一個虛擬的返回值 – rubo77

1

我希望這能對你有所幫助。

因爲我使用崇高文字編輯。我安裝了DocBlockr。 這是link

+0

有點幫助(就像在eclipse中一樣),但是你仍然需要輸入'/ **'和ENTER來獲得一個PHPDoc塊與適量的線,你可以跳轉到TAB到下一個變量。你必須添加此修復:https://github.com/spadgos/sublime-jsdocs/issues/334 – rubo77

+0

你應該添加我的評論到你的答案,否則它只是解決方案的一半 – rubo77

+0

@ rubo77:我認爲你檢查過的發佈日期是:2014年12月10日,由sameg14發佈。之後,許多提交已經在github上完成。我試過了,我沒有發現這個問題。 – Monty