(PHP 4, PHP 5)
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.
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";
call_user_func_array('increment', array(&$a));
// Vous pouvez utiliser ceci à la place jusqu'en PHP 5.3
echo $a."\n";
?>L'exemple ci-dessus va afficher :
0 1
Retourne la valeur retournée par la fonction de rappel,
ou FALSE
si une erreur survient.
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.
|
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]
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.