Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions de rappel PHP et des fonctions anonymes

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

小云云
小云云original
2018-03-19 09:55:241461parcourir

Cet article présente principalement les concepts et l'utilisation des fonctions de rappel PHP et des fonctions anonymes. Il analyse en détail les concepts, les fonctions, les méthodes d'utilisation et les précautions de fonctionnement associées des fonctions de rappel PHP et des fonctions anonymes avec des exemples auxquels les amis dans le besoin peuvent se référer. ce qui suit, Xinwang peut aider tout le monde.

1. Fonction de rappel

La fonction de rappel de PHP a en fait la même fonction que la fonction de rappel en C, Java et d'autres langages. exécution du thread principal, il saute soudainement pour exécuter la fonction de rappel set ;

Une fois la fonction de rappel exécutée, il revient au thread principal pour gérer le processus suivant

Et le rappel est appelées en php Les fonctions ne veulent pas utiliser directement le nom de la fonction comme paramètre de fonction comme C et Java, utilisez plutôt le nom de chaîne correspondant à la fonction en PHP pour exécuter

1.1, rappel sans paramètre

<.>


<?php
//无参数回调
function callback(){
  echo &#39;execute no parameters callback.<br/>&#39;;
}
function main($callback){
  echo &#39;execute main start.<br/>&#39;;
  $callback();
  echo &#39;execute main end.<br/>&#39;;
}
main(&#39;callback&#39;);
//结果
ecute main start.
execute no parameters callback.
execute main end.
1.2. Fonction de rappel globale


<?php
//全局函数回调
function callback($a,$b){
  echo "$a<====>$b.<br/>";
}
$func = &#39;callback&#39;;
call_user_func($func, 1,2);
call_user_func_array($func, array(1,2));
//结果
1<====>2.
1<====>2.
1.3. Méthode de classe et rappel de méthode statique


<?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, &#39;callback&#39;), 1,2);
call_user_func_array(array($test, &#39;callback&#39;), array(1,2));
//非静态方法调用方式二
$func = &#39;callback&#39;;
$test->$func(7,9);
//静态方法调用方式
call_user_func(array(&#39;Test&#39;, &#39;staticCallback&#39;), 4,6);
call_user_func_array(array(&#39;Test&#39;, &#39;staticCallback&#39;), 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.

2. Fonctions anonymes 2.1. Fonctions anonymes (Fonctions anonymes) en php, également appelées fermetures, sont autorisés Spécifier une fonction sans nom. Les plus couramment utilisés sont la valeur du paramètre de la fonction de rappel


2.2, la fermeture
<?php
$closureFunc = function($str){
  echo $str.&#39;<br/>&#39;;
};
$closureFunc("hello world!");
//结果
hello world!

2.2.1, la transmission des paramètres et le référencement local variables


2.2.2. Fonction de fermeture de retour
<?php
$closureFunc = function($name){
  $sex = &#39;男&#39;;
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23


2.2.3. contexte La valeur doit être transmise par référence
<?php
$closureFunc = function($name){
  echo &#39;closureFunc &#39;;
  $sex = &#39;男&#39;;
  echo "$name+++$sex<br/>";
  $func = function()use ($name,$sex){
    echo "$name--$sex<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
//结果
closureFunc lvfk+++男
lvfk--男
lvfk--男


Ce qui précède est une simple application de fermeture. Grâce à la fermeture, on peut voir qu'elle est utilisée. en dehors de la fonction Closure, le contenu du paramètre passé dans la fermeture peut en fait être le contenu de l'objet contextuel

<?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
Vous pouvez également modifier la valeur de l'objet contextuel dans la fermeture, mais elle doit être passée par référence.

Recommandations associées :

Analyse de la fonction de rappel PHP

Concept et utilisation de la fonction de rappel PHP

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

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!

Déclaration:
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