Fonctions sur la gestion des fonctions
call_user_func
Fonctions sur la gestion des fonctions
PHP Manual

# call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_array — Appelle une fonction de rappel avec les paramètres rassemblés en tableau

### Description

mixed call_user_func_array ( callable `$callback` , array `$param_arr` )

Appelle la fonction de rappel `callback` fournie avec les paramètres `param_arr`, rassemblés dans un tableau.

### Liste de paramètres

`callback`

  La fonction de rappel à appeler.

`param_arr`

  Les paramètres à passer à la fonction de rappel, sous la forme d'un tableau indexé.

### Valeurs de retour

Retourne la valeur retournée par la fonction de rappel, ou `FALSE` si une erreur survient.

### Historique

Version | Description
--- | ---
5.3.0 | L'interprétation des mots-clés du modèle objet comme parent et self a changé. Avant, les appeler avec la syntaxe à double deux-points envoyait une erreur `E_STRICT` à cause de l'interprétation statique.

### Exemples

Exemple #1 Exemple avec call_user_func_array()

`<?php
function foobar($arg, $arg2) {
echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
function bar($arg, $arg2) {
echo __METHOD__, " got $arg and $arg2\n";
}
}
// Appel de la fonction foobar() avec 2 arguments
call_user_func_array("foobar", array("one", "two"));
// Appel de la méthode $foo->bar() avec 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>`

L'exemple ci-dessus va afficher quelque chose de similaire à :

    foobar got one and two
    foo::bar got three and four

Exemple #2 Exemple avec call_user_func_array() en utilisant un espace de nom

`<?php
namespace Foobar;
class Foo {
static public function test($name) {
print "Bonjour {$name}!\n";
}
}
// Depuis PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));
// Depuis PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo', 'test'), array('Philip'));
?>`

L'exemple ci-dessus va afficher :

    Bonjour Hannes!
    Bonjour Philip!

Exemple #3 Utilisation d'une fonction lambda

`<?php
$func = function($arg1, $arg2) {
return $arg1 * $arg2;
};
var_dump(call_user_func_array($func, array(2, 4))); /* Depuis PHP 5.3.0 */
?>`

L'exemple ci-dessus va afficher :

    int(8)

### Notes

> Note:

> Avant PHP 5.4, les variables référencées dans le paramètre `param_arr` sont passées dans la fonction par référence, indépendamment du fait que la fonction s'attend à ce que le paramètre soit passé par référence. Le fait d'utiliser ce mode pour passer les valeurs au paramètre n'émet pas de notice, mais c'est tout de même obsolète et a été supprimé depuis PHP 5.4. En outre, ceci ne s'applique pas aux fonctions internes, qui voient leurs signatures de fonctions honorées. Le fait de passer une valeur lorsque la fonction s'attend à un paramètre passé par référence produit une alerte et la fonction call_user_func() retournera `FALSE` (il y a, cependant, une exception pour les valeurs passées par référence count = 1, comme en litéral, vu qu'elle peut être converti en référence sans problème, mais aussi parceque l'écriture sur ces valeurs n'a aucun effet - ne vous fiez pas à ce détail, sachant que son comportement est discutable).

> Note:

> Notez que les fonctions de rappel enregistrées avec des fonctions comme call_user_func() et call_user_func_array() ne seront pas appelées si une exception n'est pas interceptée alors qu'elle a été lancée dans une précédente fonction de rappel.

### Voir aussi

- call_user_func() - Appelle une fonction de rappel fournie par le premier argument
- Informations sur le type callback
- ReflectionFunction::invokeArgs() - Invoque les arguments d'une fonction
- ReflectionMethod::invokeArgs() - Invoque les arguments

Fonctions sur la gestion des fonctions
call_user_func
Fonctions sur la gestion des fonctions
PHP Manual