Maison  >  Article  >  développement back-end  >  Le concept et l'utilisation des fonctions de rappel PHP

Le concept et l'utilisation des fonctions de rappel PHP

墨辰丷
墨辰丷original
2018-05-17 13:54:371197parcourir

Cet article présente principalement le concept et l'utilisation de la fonction de rappel PHP, présente brièvement le concept et le principe de la fonction de rappel et analyse les compétences d'utilisation associées de la fonction de rappel sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Les détails sont les suivants :

1. Le concept de fonction de rappel

Premier coup d'oeil à la fonction de rappel en langage C. : la fonction de rappel est une fonction pass La fonction appelée par le pointeur. Si vous passez un pointeur de fonction (adresse) en paramètre à une autre fonction, et que ce pointeur est utilisé pour appeler la fonction vers laquelle il pointe, on dit qu'il s'agit d'une fonction de rappel. La fonction de rappel n'est pas appelée directement par l'implémenteur de la fonction, mais est appelée par une autre partie lorsqu'un événement ou une condition spécifique se produit pour répondre à l'événement ou à la condition.

Le concept des fonctions de rappel dans d'autres langages est similaire, mais les mécanismes d'implémentation des fonctions de rappel dans différents langages sont différents. De manière générale, la fonction de rappel est une fonction que nous définissons, mais c'est le cas. pas directement Au lieu de l'appeler via une autre fonction, cette fonction appelle la fonction de rappel en recevant son nom et ses paramètres.

2. Implémentation des fonctions de rappel en php

php fournit deux fonctions intégrées

et call_user_func() qui fournissent des fonctions de rappel soutien. La différence entre ces deux fonctions est que call_user_func_array()call_user_func_array reçoit les paramètres de la fonction de rappel sous forme de tableau. Vous pouvez le connaître en regardant son prototype : mixed call_user_func_array ( callable $callback , array. $param_arr ) , il n'a que deux paramètres. Et call_user_func($callback, paramètre 1, paramètre 2,...) Le nombre de paramètres de est déterminé en fonction des paramètres de la fonction de rappel.

Comment implémenter des rappels pour les fonctions globales dans les scripts, les méthodes non statiques qui n'utilisent pas $this dans les classes, les méthodes non statiques qui utilisent $this dans les classes (besoin de transmettre des objets) et les méthodes statiques dans les classes, voici le code qui a réussi le test.

<?php
//普通函数
function f1($arg1,$arg2)
{
  echo __FUNCTION__.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2;
  echo "<br/>";
}
//通过call_user_func调用函数f1
call_user_func(&#39;f1&#39;,&#39;han&#39;,&#39;wen&#39;);
  //通过call_user_func_array调用函数
call_user_func_array(&#39;f1&#39;,array(&#39;han&#39;,&#39;wen&#39;));
class A
{
  public $name;
  function show($arg1)
  {
    echo &#39;the arg is:&#39;.$arg1."<br/>";
    echo &#39;my name is:&#39;.$this->name;
    echo "<br/>";
  }
  function show1($arg1,$arg2)
  {
    echo __METHOD__.&#39; exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";
  }
  public static function show2($arg1,$arg2)
  {
    echo __METHOD__.&#39; of class A exec, the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";
  }
}
//调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员
$a = new A;
$a->name = &#39;wen&#39;;
call_user_func_array(array($a,&#39;show&#39;,),array(&#39;han!&#39;));
//调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this
call_user_func_array(array(&#39;A&#39;,&#39;show1&#39;,),array(&#39;han!&#39;,&#39;wen&#39;));
//调用类中静态成员函数
call_user_func_array(array(&#39;A&#39;,&#39;show2&#39;),array(&#39;argument1&#39;,&#39;argument2&#39;));

Résultat de l'exécution :

f1exec,the args is:han wen
f1exec,the args is:han wen
the arg is:han!
my name is:wen
A::show1 exec,the args is:han! wen
A::show2 of class A exec, the args is:argument1 argument2

Recommandations associées :

Comment la promesse remplace la fonction de rappel dans le code

Explication détaillée des cas d'utilisation de la fonction de rappel JS

Description du cas d'utilisation de la fonction de rappel JS

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