(PHP 4, PHP 5, PHP 7, PHP 8)
call_user_func — Appelle une fonction de rappel fournie par le premier argument
Appelle une fonction de rappel callback
fournie par le paramètre callback
où les autres arguments seront passés en paramètre.
callback
La fonction de rappel à appeler.
args
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";
// il est possible d'utiliser ceci à la place
call_user_func_array('increment', array(&$a));
echo $a."\n";
// il est aussi possible d'utiliser une fonctions variables
$increment = 'increment';
$increment($a);
echo $a."\n";
?>L'exemple ci-dessus va afficher :
Warning: Parameter 1 to increment() expected to be a reference, value given in … 0 1 2
Retourne la valeur retournée par la fonction de rappel.
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');
call_user_func(array(__NAMESPACE__ .'\Foo', 'test'));
?>
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');
$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');
?>
L'exemple ci-dessus va afficher :
[test]
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.