Maison >développement back-end >tutoriel php >Fonction de rappel PHP et analyse de cas d'utilisation de fonctions anonymes

Fonction de rappel PHP et analyse de cas d'utilisation de fonctions anonymes

php中世界最好的语言
php中世界最好的语言original
2018-05-18 10:26:311590parcourir

Cette fois, je vais vous présenter une analyse de cas d'utilisation de la fonction de rappel PHP et de la fonction anonyme, et quelles sont les précautions lors de l'utilisation de la fonction de rappel PHP et fonction anonyme. Ce qui suit est un cas pratique, jetons un coup d'œil.

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/>';
}
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.
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.
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, '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.

2. >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

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

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

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

2.2.3 La fermeture modifie la valeur du contexte et nécessite un
<?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--男
passage de référence

<.> Ce qui précède est une simple application de la fermeture. Grâce à la fermeture, nous pouvons voir que lors de l'utilisation de la fermeture en dehors de la fonction, 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
. être utilisé dans la fermeture. Modifiez la valeur de l'objet contextuel à l'intérieur, mais elle doit être passée par référence

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 à. d'autres articles connexes sur le site PHP chinois !

Lecture recommandée :

Explication détaillée des étapes pour implémenter le cryptage de hachage unidirectionnel en PHP


Explication détaillée de les étapes pour masquer le fichier d'entrée en PHP

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