La fonction de rappel est une technologie très courante dans la programmation PHP, et c'est aussi un problème que les débutants rencontreront d'innombrables fois. Comment utiliser correctement les fonctions de rappel peut rendre votre programme PHP plus flexible et intelligent.
1. Qu'est-ce qu'une fonction de rappel ?
En termes simples, une fonction de rappel est un bloc de code exécutable qui peut être appelé dynamiquement en cas de besoin. À l'origine, il était principalement utilisé pour le traitement d'événements, mais il est désormais également largement utilisé pour implémenter des moteurs de modèles, le traitement de données et d'autres fonctions.
L'un des avantages des fonctions de rappel est l'abstraction. Si vous souhaitez utiliser une interface simple pour permettre aux utilisateurs d'appeler la fonction que vous souhaitez implémenter, vous pouvez fournir une interface via la fonction de rappel et permettre aux utilisateurs de transmettre leurs propres méthodes d'implémentation. Lorsque le programme est en cours d'exécution, votre programme utilise les méthodes transmises pour exécuter des fonctions spécifiques.
2. Scénarios d'utilisation des fonctions de rappel
Les fonctions de rappel ont de nombreux scénarios d'application, qui sont présentés ci-dessous :
La fonction de rappel dans le traitement des événements peut être transmise en tant que paramètre à la fonction de traitement des événements, lorsque réponse à l'événement Déclenché automatiquement. Par exemple, sur un site Web PHP, vous pouvez avoir un formulaire qui déclenche un événement lors de sa soumission. Vous souhaitez écrire le code pour traiter le formulaire dans lequel le formulaire est utilisé. À ce stade, vous devez encapsuler le code de traitement dans une fonction de rappel et le transmettre en tant que paramètre à la fonction de traitement du formulaire.
Les fonctions de rappel peuvent également être utilisées comme paramètres de fonctions de traitement de données, telles que les fonctions de tri de tableaux et les fonctions de filtrage de données. Vous pouvez utiliser des fonctions de rappel pour personnaliser la façon dont un tableau est trié ou pour personnaliser les méthodes de filtrage des données. Par exemple, si vous souhaitez rechercher une valeur spécifique dans un tableau, mais souhaitez également conserver la situation lorsque plusieurs valeurs sont trouvées dans le tableau, vous pouvez écrire une fonction de rappel et utiliser cette fonction lors de la recherche dans le tableau pour tout ajouter. valeurs correspondantes. Retour à un nouveau tableau.
Les fonctions de rappel sont souvent utilisées dans les moteurs de modèles pour développer les instructions et les fonctions personnalisées dans les modèles. Par exemple, la syntaxe de boucle foreach est utilisée dans un modèle pour parcourir les données d'un tableau et les afficher dans le modèle. La raison pour laquelle la syntaxe foreach est prise en charge est qu'une fonction de rappel est utilisée en interne pour implémenter le parcours des données.
3. Comment définir les fonctions de rappel
Comment définir et utiliser les fonctions de rappel en PHP ? C'est en fait très simple. En PHP, les fonctions de rappel peuvent être soit des fonctions normales, soit des fonctions anonymes.
Exemple de code :
<?php function my_callback_function() { echo 'Hello World!'; } call_user_func('my_callback_function'); ?>
La sortie de ce code est : Hello World !
Exemple de code :
<?php $my_callback = function () { echo 'Hello World!'; }; call_user_func($my_callback); ?>
La sortie de ce code est : Hello World !
Un moyen encore plus simple consiste à utiliser les fonctions fléchées.
Exemple de code :
<?php call_user_func(fn() => 'Hello World!'); ?>
Le résultat de sortie de ce code est également : Hello World !
4. Comment utiliser la fonction de rappel
Lorsque vous utilisez la fonction de rappel, vous pouvez utiliser les fonctions intégrées de PHP call_user_func() et call_user_func_array().
La fonction call_user_func() est utilisée pour appeler la fonction de rappel et transmettre les paramètres en tant que paramètres de la fonction. La syntaxe de cette fonction est la suivante :
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
Remarque : Le paramètre de rappel doit ici transmettre le nom de la fonction de rappel ou de la fonction de rappel stockée dans une variable.
Exemple de code :
<?php function my_callback_function($string) { echo 'Hello ' . $string . " "; } call_user_func('my_callback_function', 'World'); ?>
Le résultat de sortie de ce code est : Hello World
.
La fonction call_user_func_array() est similaire à la fonction call_user_func(), mais elle utilise un tableau comme paramètre de la fonction de rappel. La syntaxe de cette fonction est la suivante :
mixed call_user_func_array ( callable $callback , array $param_arr )
Remarque : Le paramètre de rappel doit ici transmettre le nom de la fonction de rappel ou de la fonction de rappel stockée dans une variable.
Exemple de code :
<?php function product($a, $b) { return $a * $b; } // 回调函数作为参数 echo call_user_func_array('product', array(4, 5)) . " "; ?>
La sortie de ce code est : 20.
5. Cas d'application de la fonction de rappel
Dans la fonction de tableau, la fonction de rappel peut trier le tableau selon la méthode spécifiée en spécifiant la fonction de comparaison. Par exemple, nous voulons organiser un tableau du plus petit au plus grand :
Exemple de code :
<?php function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, 'cmp'); print_r($a); ?>
La fonction usort() est utilisée ici pour trier le tableau, où le premier paramètre est le tableau à trier, et le le deuxième paramètre est la fonction de rappel.
Le résultat de sortie de ce code est : Array ([0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 ).
Dans la fonction de filtrage des données, la fonction de rappel peut filtrer les données du tableau selon la méthode spécifiée en spécifiant la fonction de filtrage. Par exemple, nous voulons filtrer les nombres dans un tableau :
Exemple de code :
<?php function is_number($var) { if (is_numeric($var)) { return true; } else { return false; } } $array = array(1, 'abc', 2, 'def', 3, 'ghi'); var_dump(array_filter($array, 'is_number')); ?>
Dans le code ci-dessus, la fonction array_filter() est utilisée. Le premier paramètre de la fonction est le tableau et le deuxième paramètre est. la fonction de rappel. , indiquant que seules les données qui satisfont aux conditions de la fonction is_number() sont renvoyées.
La sortie de ce code est : array(3) { [0]=> int(1) [2]=>
在模板引擎中,回调函数往往用来扩充模板中的标签。例如我们现在要开发一个简单的模板引擎,实现将模板中的include标签替换为使用PHP include函数的功能:
示例代码:
<?php function replace_include($template) { $template = preg_replace_callback('#{{include file=(.*?)}}#', function($match) { return "<?php include ".trim($match[1])."; ?>"; }, $template); return $template; } $template = '{{include file="included.php"}}'; $template = replace_include($template); echo $template; ?>
在上面的代码中,使用了preg_replace_callback()函数,该函数的第一个参数为正则表达式,第二个参数回调函数。该回调函数将匹配到的值替换为PHP include函数。
该代码的输出结果为:。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!