Maison > développement back-end > tutoriel php > Explication détaillée de l'utilisation des fonctions de rappel PHP et des fonctions anonymes

Explication détaillée de l'utilisation des fonctions de rappel PHP et des fonctions anonymes

php中世界最好的语言
Libérer: 2023-03-22 07:20:02
original
1654 Les gens l'ont consulté

Cette fois, je vous apporte une explication détaillée de l'utilisation des fonctions de rappel PHP et des fonctions anonymes Quelles sont les précautions pour l'utilisation des fonctions de rappel PHP et. fonctions anonymes, comme suit C'est un cas pratique, jetons-y un coup d'œil.

Les exemples de cet article décrivent les concepts et l'utilisation des fonctions de rappel PHP et des fonctions anonymes. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1. Fonction de rappel

La fonction de rappel de PHP est en fait la même que celle de PHP. celui de C, Java et d'autres langages. La fonction de rappel est exactement la même. Lors de l'exécution du thread principal, elle saute soudainement pour exécuter la fonction de rappel définie

Après l'exécution de la fonction de rappel, il revient au thread principal pour gérer le processus suivant

Lorsque vous appelez la fonction de rappel en PHP, vous ne souhaitez pas utiliser directement le nom de la fonction comme paramètre de fonction comme C et Java, utilisez plutôt la chaîne. nom correspondant à la fonction en PHP à exécuter

1.1 Rappel sans paramètre

<?php
//无参数回调
function callback(){
  echo &#39;execute no parameters callback.<br/>';
}
function main($callback){
  echo 'execute main start.<br/>';
  $callback();
  echo 'execute main end.<br/>';
}
main('callback');
//结果
ecute main start.
execute no parameters callback.
execute main end.
Copier après la connexion

1.2 Fonction de rappel globale

<?php
//全局函数回调
function callback($a,$b){
  echo "$a<====>$b.<br/>";
}
$func = 'callback';
call_user_func($func, 1,2);
call_user_func_array($func, array(1,2));
//结果
1<====>2.
1<====>2.
Copier après la connexion

1.3. rappel de méthode

<?php
class Test{
  //成员函数
  function callback($a,$b){
    echo "callback $a<====>$b.<br/>";
  }
  public static function staticCallback($a,$b){
    echo "staticCallback $a<====>$b.<br/>";
  }
}
//非静态方法调用方式一
$test = new Test();
call_user_func(array($test, 'callback'), 1,2);
call_user_func_array(array($test, 'callback'), array(1,2));
//非静态方法调用方式二
$func = 'callback';
$test->$func(7,9);
//静态方法调用方式
call_user_func(array('Test', 'staticCallback'), 4,6);
call_user_func_array(array('Test', 'staticCallback'), array(4,6));
call_user_func_array("Test::staticCallback", array(4,6));
//结果
callback 1<====>2.
callback 1<====>2.
callback 7<====>9.
staticCallback 4<====>6.
staticCallback 4<====>6.
staticCallback 4<====>6.
Copier après la connexion

2. Fonction anonyme

2.1 Les fonctions anonymes en PHP, également appelées fermetures, permettent de spécifier une fonction. sans nom. Les plus couramment utilisés sont les paramètres de la fonction de rappel valeur

<?php
$closureFunc = function($str){
  echo $str.'<br/>';
};
$closureFunc("hello world!");
//结果
hello world!
Copier après la connexion

2.2, fermeture

2.2.1, transmission de paramètres et référencement de variables locales

<?php
$closureFunc = function($name){
  $sex = '男';
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23
Copier après la connexion

2.2.2. Fonction de fermeture de retour

<?php
$closureFunc = function($name){
  echo 'closureFunc ';
  $sex = '男';
  echo "$name+++$sex<br/>";
  $func = function()use ($name,$sex){
    echo "$name--$sex<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
//结果
closureFunc lvfk+++男
lvfk--男
lvfk--男
Copier après la connexion

2.2.3 La fermeture modifie la valeur du contexte et nécessite un passage de référence

<?php
$closureFunc = function($name){
  $age = 1;
  echo "$name+++$age<br/>";
  $func = function()use ($name,&$age){
    $age++;
    echo "$name--$age<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
$func();
//结果
lvfk+++1
lvfk--2
lvfk--3
lvfk--4
Copier après la connexion
<.> Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !

Lecture recommandée :

PHP implémente directement la génération d'affiches publicitaires

PHP détermine si WeChat ou le navigateur est ouvert

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal