call_user_func
(PHP 4, PHP 5, PHP 7)
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
Version en cache
05/11/2024 16:22:39 Cette version de la page est en cache (à la date du 05/11/2024 16:22:39) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-call-user-func.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.