Utilisation de 'call_user_func'
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 5 sur 68.
La fonction call_user_func() offre un moyen puissant d'appeler des fonctions de manière dynamique en PHP. Au lieu d'appeler une fonction directement par son nom, vous pouvez stocker le nom de la fonction dans une variable de type chaîne et utiliser call_user_func() pour l'exécuter.
Voici la syntaxe de base :
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Affiche : Hello World!
?>Cela devient particulièrement utile lorsque vous devez appeler différentes fonctions en fonction des entrées de l'utilisateur ou de conditions. Vous pouvez également passer des arguments à la fonction en les incluant comme paramètres supplémentaires :
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Affiche : 8
?>Cet appel de fonction dynamique est particulièrement utile lors de la création d'applications flexibles où la fonction spécifique à exécuter est déterminée au moment de l'exécution, comme pour les calculatrices, les processeurs de commandes ou les systèmes de routage.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCréez trois fonctions : multiply qui prend deux nombres et retourne leur produit, subtract qui prend deux nombres et retourne leur différence, et divide qui prend deux nombres et retourne leur quotient.
Vous recevrez trois entrées : le nom de l'opération ("multiply", "subtract", ou "divide"), et deux nombres. Lisez les trois entrées, utilisez call_user_func() pour exécuter la fonction appropriée avec les deux nombres, et affichez le résultat.
Format d'entrée : Trois lignes - la première ligne contient le nom de l'opération, la deuxième ligne contient le premier nombre, la troisième ligne contient le deuxième nombre
Sortie attendue : Le résultat de l'opération
Aide-mémoire
La fonction call_user_func() vous permet d'appeler des fonctions de manière dynamique en utilisant une variable de type chaîne contenant le nom de la fonction :
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Affiche : Hello World!
?>Vous pouvez passer des arguments à la fonction en les incluant comme paramètres supplémentaires :
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Affiche : 8
?>Essayez vous-même
<?php
// Lire l'entrée
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Créer les trois fonctions (multiplier, soustraire, diviser) ici
// TODO: Utiliser call_user_func() pour exécuter la fonction appropriée
// Afficher le résultat
echo $result;
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement