call_user_func
(PHP 4, PHP 5)
call_user_func — Appelle une fonction de rappel fournie par le premier argument
Description
Appelle une fonction de rappel callback
fournie par le paramètre callback
où les autres arguments seront passés en paramètre.
Liste de paramètres
-
callback -
La fonction de rappel à appeler.
-
parameter -
0 ou plus de paramètres à passer à la fonction de rappel.
Note:
Notez que les paramètres pour call_user_func() ne sont pas passés par référence.
Exemple #1 Exemple avec call_user_func() par référence
<?php
function increment(&$var)
{
$var++;
}
$a = 0;
call_user_func('increment', $a);
echo $a."\n";
// Vous pouvez utiliser ceci à la place
call_user_func_array('increment', array(&$a));
echo $a."\n";
?>L'exemple ci-dessus va afficher :
0 1
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 #2 Exemple avec call_user_func()
<?php
function barber($type)
{
echo "Vous voulez une coupe $type, aucun problème";
}
call_user_func('barber', "au bol");
call_user_func('barber', "au rasoir");
?>
L'exemple ci-dessus va afficher :
Vous voulez une coupe au bol, aucun problème Vous voulez une coupe au rasoir, aucun problème
Exemple #3 Exemple avec call_user_func() en utilisant un espace de noms
<?php
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
?>
L'exemple ci-dessus va afficher :
Hello world! Hello world!
Exemple #4 Utilisation d'une méthode de classe avec call_user_func()
<?php
class maclasse {
static function dit_bonjour()
{
echo "Bonjour!\n";
}
}
$classname = "maclasse";
call_user_func(array($classname, 'dit_bonjour'));
call_user_func($classname .'::dit_bonjour'); // Depuis 5.2.3
$monobjet = new maclasse();
call_user_func(array($monobjet, 'dit_bonjour'));
?>
L'exemple ci-dessus va afficher :
Bonjour! Bonjour! Bonjour!
Exemple #5 Utilisation d'une fonction lambda avec call_user_func()
<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test'); /* Depuis PHP 5.3.0 */
?>
L'exemple ci-dessus va afficher :
[test]
Notes
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_array() - Appelle une fonction de rappel avec les paramètres rassemblés en tableau
- is_callable() - Détermine si l'argument peut être appelé comme fonction
- Informations sur le type callback
- ReflectionFunction::invoke() - Invoque une fonction
- ReflectionMethod::invoke() - Invoque