(PHP 5 >= 5.1.2, PHP 7, PHP 8)
ReflectionFunction::invokeArgs — 引数を指定して関数を起動する
args関数に渡す引数を含む配列。 call_user_func_array() と同じように動作します。
args のキーがすべて数値の場合、キーは無視され、
各要素は位置を指定した引数として順に関数に渡されます。
args のキーに文字列のものがある場合、
その要素は、キーを名前とする名前付き引数として関数に渡されます。
args 内で数値のキーが文字列のキーより後に現れた場合、
または文字列のキーが関数のどのパラメータの名前とも一致しない場合、
Error がスローされます。
起動した関数の結果を返します。
| バージョン | 説明 |
|---|---|
| 8.0.0 |
args のキーは、
静かに無視されるのではなく、パラメータの名前として解釈されるようになりました。
|
例1 ReflectionFunction::invokeArgs() の例
<?php
function title($title, $name)
{
return sprintf("%s. %s\r\n", $title, $name);
}
$function = new ReflectionFunction('title');
echo $function->invokeArgs(array('Dr', 'Phil'));
?>上の例の出力は以下となります。
Dr. Phil
例2 ReflectionFunction::invokeArgs() で参照を使う例
<?php
function get_false_conditions(array $conditions, array &$false_conditions)
{
foreach ($conditions as $condition) {
if (!$condition) {
$false_conditions[] = $condition;
}
}
}
$function_ref = new ReflectionFunction('get_false_conditions');
$conditions = array(true, false, -1, 0, 1);
$false_conditions = array();
$function_ref->invokeArgs(array($conditions, &$false_conditions));
var_dump($false_conditions);
?>上の例の出力は以下となります。
array(2) {
[0]=>
bool(false)
[1]=>
int(0)
}
注意:
関数の引数の中にリファレンス渡しを要するものがある場合は、 渡す引数の中でもリファレンスにしておく必要があります。