2016-04-05 77 views
1

假設我有這個類:PHP檢測,如果一個函數有一個可選參數

class Test 
{ 
    public function foo($argument = "") { 
     //do something 
    } 

    public function bar($argument) { 
     //do something else 
    } 
} 

有什麼辦法,我可以告訴,如果Foo的參數是可選的,酒吧的說法是不通過PHP?

我試過從ReflectionMethod中使用getParameters(),但那只是返回名稱,而不是任何可以告訴我的信息,如果它是可選的。

+1

http://php.net/manual/en/reflectionparameter.isoptional.php – mpen

+0

@SvenB怎麼會不工作? 'getParameters'返回一個'ReflectionParameter'對象的數組。循環播放它們,調用' - > isOptional',獲取所需的信息。告訴我們一些代碼,你有什麼嘗試? – mpen

回答

0

我不完全相信你通過檢測,如果函數有可選參數的意思。

但是這樣做有什麼問題嗎?

public function foo($argument = "") { 
    if($argument != "") { 
     .... argument is set 
    } 
} 

編輯:我明白你的意思了。是的,你可以使用反射爲

$reflection = new ReflectionMethod($className, $methodName); 
$params = $reflection->getParameters(); 
foreach ($params as $param) { 
    echo $param->getName(); 
    echo $param->isOptional(); 
} 
+0

我測試它是否有來自另一個類的可選參數。 – Starfire1337

+0

@ Starfire1337啊我明白你的意思是你可以使用反射 –

相關問題