La fonction dite de rappel signifie que lors de l'appel d'une fonction, au lieu de passer une variable standard en paramètre, une autre fonction est passée en paramètre à la fonction appelée. Si un paramètre de type callback apparaît dans la description du format de la fonction, la fonction est une fonction de rappel. La section précédente a présenté la Fonction de paramètre variable PHP Cette section abordera l'apprentissage des fonctions de rappel PHP.
La description du format de la fonction de rappel est la suivante :
mixed funName (callback arg) //在参数列表中使用伪类型 callback 描述
le rappel est également un type de pseudo-type en PHP, indiquant que les paramètres de la fonction doivent accepter une autre fonction comme paramètre réel. Une question très importante est de savoir pourquoi utiliser des fonctions comme paramètres ? Comme introduit précédemment, le comportement d'exécution de la fonction appelante peut être modifié en passant des paramètres, mais parfois la possibilité de transmettre uniquement une valeur à la fonction est encore limitée. Si un processus d'exécution défini par l'utilisateur peut être transmis à la fonction pour utilisation, cela augmente considérablement l'expansion de la fonctionnalité de la fonction par l'utilisateur. Comment déclarer et utiliser les fonctions de rappel est également un problème critique. Si vous devez déclarer une fonction de rappel, vous devez d'abord comprendre la fonction variable.
Fonction variable
La fonction variable est également appelée fonction variable. Si un nom de variable est suivi de parenthèses, PHP recherchera une fonction portant le même nom que la valeur de la variable et tentera de l'exécuter. Par exemple, déclarez une fonction test() et attribuez la chaîne de nom de fonction test à la variable $demo. Si vous imprimez directement la variable $demo, la valeur de sortie doit être la chaîne test ; mais si vous ajoutez des parenthèses $demo() après la variable $demo, la fonction correspondant au test de valeur de la variable $demo est appelée. De cette façon, différents noms de fonction peuvent être attribués à la même variable, puis la fonction peut être appelée via la variable, ce qui est similaire à l'application de fonctionnalités polymorphes en mode orienté objet.
L'exemple de code est le suivant :
<?php function one($a,$b){ return $a + $b; } function two($a,$b){ return $a*$b; } function three($a,$b){ return $a/$b; } $result = "one"; //将函数名one赋值给变量$result,执行$result()时则调用函数one() //$result = "two"; //将函数名two赋值给变量$result,执行$result()时则调用函数two() //$result = "three"; //将函数名three赋值给变量$result,执行$result()时则调用函数three() echo "结果是:".$result(4,6); //变量$result接收到哪个函数名的值,就调用哪个函数 ?>
Dans l'exemple ci-dessus, trois fonctions one(), two() et three() sont déclarées, utilisées pour calculer respectivement la somme, le produit et le quotient de deux nombres. Et attribuez les noms de fonction des trois fonctions (sans parenthèses) à la variable $result sous forme de chaîne, puis utilisez le nom de la variable $result suivi de parenthèses et passez deux paramètres entiers, il trouvera l'exécution de la fonction avec le même nom que la valeur de la variable $result. La plupart des fonctions peuvent attribuer le nom de la fonction à une variable pour former une fonction variable. Mais les fonctions variables ne peuvent pas être utilisées dans les structures linguistiques.
Utiliser des fonctions variables pour déclarer et appliquer des fonctions de rappel
Si vous souhaitez personnaliser une fonction qui peut être rappelée, vous peut choisir d'utiliser des fonctions variables Aider à réaliser. Lors de la définition d'une fonction de rappel, la structure de déclaration de la fonction ne change pas, tant que le paramètre déclaré est une variable ordinaire. Mais lors de l'application de cette variable paramètre à l'intérieur d'une fonction, si vous ajoutez des parenthèses, vous pouvez appeler la fonction avec le même nom que la valeur du paramètre, donc le paramètre passé doit être la chaîne de nom d'une autre fonction. Le but de l'utilisation de la fonction de rappel est de transmettre une fonction auto-définie à la fonction pour une utilisation à l'intérieur.
L'exemple de code est le suivant :
<?php //声明回调函数filter, 在0-10的整数中通过自定义条件过滤不要的数字 function filter($fun){ for($i=0; $i<=10; $i++){ //将参数变量$fun加上一个圆括号$fun(),则为调用和变量$fun值同名的函数 if($fun($i)) continue; echo $i.'<br>'; } } //声明一个函数one,如果参数是3的倍数就返回ture,否则返回false function one($num){ return $num%3 == 0; } //声明一个函数two,如果参数是一个回文数返回ture,否则返回false function two($num){ return $num == strrev($num); } filter("one"); //打印出10以内非3的倍数,参数one是函数one()的名称字符串,是一个回调 echo "---------------------<br>"; filter("two"); //打印出10以内非回文数,参数two是函数two()的名称字符串,是一个回调 ?>
Le résultat de l'exécution est :
ci-dessus Dans l'exemple, si la fonction déclarée filter() n'accepte que les valeurs ordinaires comme paramètres, le nombre que l'utilisateur peut filtrer sera relativement unique. Dans cet exemple, dans la fonction filter() définie, une valeur contenant une taxe transmise comme condition de filtre est appelée. De cette façon, la fonction est beaucoup plus puissante. Vous pouvez filtrer tous les nombres que vous n'aimez pas dans le. fonction filtre(). En ajoutant une parenthèse $fun() à la variable paramètre $fun à l'intérieur de la fonction filter(), vous pouvez appeler une fonction avec la même valeur que la variable $fun comme condition de filtrage. Par exemple, dans cet exemple, deux fonctions one() et two() sont déclarées, qui sont utilisées pour filtrer les multiples et palindromes de 3 dans 10 respectivement tant que les noms de fonction un et deux sont des chaînes lors de l'appel de filter(). Passé aux paramètres, c'est-à-dire que ces deux fonctions sont transmises à la fonction filter() pour un usage interne.
Ce chapitre explique la définition de la fonction variable, la déclaration et l'application de la fonction de rappel php et son utilisation.
【Tutoriels associés recommandés】1. "php.cn Dugu Jiujian (4) - Tutoriel vidéo PHP "
2. Un ensemble complet de tutoriels vidéo sur la programmation PHP de l'entrée au masterTutoriels vidéo pratiques PHPCe 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!