2010-07-15 44 views
0

我碰到這個網頁,其中談到了非常方便的新思考類附帶PHP5,並返回一個類的所有方法和屬性跌跌撞撞:Print_r找到方法的允許值?

print_r to get object methods in PHP?

根據這一點,是有什麼辦法確定它返回的方法的允許值?

+0

我不知道我明白你在問什麼,你尋找方法的參數列表或者你在尋找方法的返回值?我不知道有任何方法可以通過編程方式完成,最好的資源是http://php.net上的文檔。 – jordanstephens 2010-07-15 19:56:07

+0

您的類是否有doccomments,它聲明瞭可能的返回值?如果是這樣,我認爲這些可能使用反射提取。 – NikiC 2010-07-15 20:05:43

回答

1

您的意思是確定某些類中某些方法的返回值的允許類型和返回值的範圍?我想很難。畢竟,PHP中沒有定義或暗示返回值的方法。所以,我可以做到以下幾點:

class .... { 

function myFunction() 
{ 
    ... some code .... 
    if (condition) return "A"; 
    .... more code ..... 
    if (condition2) return 2; 
    .... more code .... 
    if (condition3) return $_POST["number"]; 
} 
} 

這當然是完全擰起來的例子,但你明白我的意思。返回值的可能類型非常難以預測,因爲我可以隨時返回任何內容。

我認爲最好的人能做的就是在文檔塊中解決這個問題。如果你遵循PHPDoc的符號:

/** 
* @desc Searches for a record. 
* @return int the number of found records. 
*/ 
function myMethod() 
    { .... 

許多IDE都能夠至少給你一個提示有關預期收益類型時,您鍵入的方法的調用。

0

那麼,這取決於你所說的「允許值」。如果在文檔塊是可用的,你也許可以與反射找到它......要找到返回值:

class foo { 
    /** 
    * @returns boolean When false 
    */ 
    public function bar($x, $y = 'bar') { 
    } 
} 

$reflector = new ReflectionMethod('foo', 'bar'); 
$comment = $reflector->getDocComment(); 
if (preg_match('#@returns (\\S+)#', $comment, $match)) { 
    echo "Method returns: ".$match[1]; 
} 

生產:

Method Returns: boolean 

然後,你只需要解析你想從那個文檔評論...你可以注意它可以是一個OR類(或多個分組,boolean|null|string|DOMNode)...