Mid-Atlantic Developer Conference


(PHP 5 >= 5.1.2, PHP 7)

ReflectionFunction::invokeArgsInvoque les arguments d'une fonction


public mixed ReflectionFunction::invokeArgs ( array $args )

Invoque la fonction et lui passe les arguments sous la forme d'un tableau.

Liste de paramètres


Les arguments à utiliser lors de l'invocation, de la même forme que pour call_user_func_array().

Valeurs de retour

Retourne le résultat de la fonction invoquée.


Exemple #1 ReflectionFunction::invokeArgs() example

function title($title$name)
sprintf("%s. %s\r\n"$title$name);

$function = new ReflectionFunction('title');


L'exemple ci-dessus va afficher :

Dr. Phil

Exemple #2 Exemple pour ReflectionFunction::invokeArgs() avec des références

function get_false_conditions(array $conditions, array &$false_conditions)
$conditions as $condition) {
$condition) {
$false_conditions[] = $condition;

$function_ref = new ReflectionFunction('get_false_conditions');

$conditions       = array(truefalse, -101);
$false_conditions = array();

$function_ref->invokeArgs(array($conditions, &$false_conditions));


L'exemple ci-dessus va afficher :

array(2) {



Si la fonction a des arguments qui ont besoin d'être des références, alors ils doivent être passés par références dans la liste des arguments.

Voir aussi

add a note add a note

User Contributed Notes 2 notes

theyourcomputer at gmail dot com
4 months ago
In the case of call_user_func_array(), if you were to pass around an anonymous function and reference $this within the anonymous function, $this will faithfully refer to the class in the context in which the function was defined. Using ReflectionFunction::invokeArgs() does not seem to retain its original context--yeah, even if you bind the anonymous function before invoking. I recommend call_user_func_array() where context is a concern.
Andrea Giammarchi
10 years ago
I encountered a weird problem with ReflectionFunction, described in ticket 44139 of PHP Bugs.

If for some reason you need to call with invoke, or invokeArgs, a function like array_unshift (that accepts internally the array by reference) you could use this code to avoid the generated warning or fatal error.

function unshift(){
$ref        = new ReflectionFunction('array_unshift');
$arguments    = func_get_args();
$ref->invokeArgs(array_merge(array(&$this->arr), $arguments));

I don't know about performances (you can create an array manually too, starting from array(&$this->something) and adding arguments). However, it seems to work correctly without problems, at least until the send by reference will be usable with one single value ...
To Top