Мне нужно вызвать функцию, используя Reflection API.Функция имеет необязательные параметры, и мне нужно вызвать ее, предоставив лишь некоторые из них.
Например, у меня есть эта функция:
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
использовать значение по умолчанию.Установка "secondParam" => null
в массиве $parameters
не является решением, поскольку null
является значением.
Возможно ли использовать Reflection?
Спасибо