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"; call_user_func_array('increment', array(&$a)); // Vous pouvez utiliser ceci à la place jusqu'en PHP 5.3 echo $a."\n"; ?>
<?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"); ?>
<?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 ?>
<?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')); ?>
<?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