我需要使用Reflection API調用函數。該函數具有可選參數,我需要調用它來提供其中的一些參數。PHP反射和invokeArgs():強制參數使用其默認值
例如,我有這樣的功能:
public function doSomething($firstParam, $secondParam = "default", $thirdParam = "default)
而我使用invokeArgs()
調用doSomething()
,傳遞代表參數省略設置值到可選$secondParam
值的數組:
$parameters = array("firstParam"=>"value", "thirdParam"=>"thirdValue");
$reflectedDoSomething->invokeArgs($instance, $parameters);
這裏發生的事情是,invokeArgs()
調用連續設置其參數的方法,而不跳過$secondParam
,該值現在被賦值爲「thirdValue」並省略$thirdParam
。這在邏輯上是正確的。該方法被調用,如doSomething("value", "thirdValue")
。
我想在這裏做的是強制$secondParam
使用其默認值。在$parameters
陣列中設置"secondParam" => null
不是解決方案,因爲null
是一個值。
它是否可能使用反射?
感謝