Maison > développement back-end > tutoriel php > Analyse du code des fonctions de rappel en php

Analyse du code des fonctions de rappel en php

烟雨青岚
Libérer: 2023-04-08 20:26:01
avant
2335 Les gens l'ont consulté

Analyse du code des fonctions de rappel en php

Analyse du code de la fonction de rappel en php

1.

Tout d'abord, jetons un œil à la fonction de rappel en langage C : une fonction de rappel est une fonction appelée via un pointeur de fonction. 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 le mécanisme d'implémentation des fonctions de rappel dans différents langages est différent. En termes simples, la fonction de rappel est une fonction que nous définissons, mais nous ne le faisons 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. La fonction de rappel de en PHP

PHP fournit deux fonctions intégrées

call_user_func( ) et call_user_func_array() prennent en charge les fonctions de rappel.

La

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

3. Implémentation de la fonction de rappel

Comment implémenter des fonctions globales dans les scripts, les méthodes non statiques qui n'utilisent pas $this dans les classes et les méthodes non statiques qui utilisent $this dans les classes En ce qui concerne les méthodes statiques (nécessité de transmettre des objets) et les rappels de 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;));
Copier après la connexion

Merci à tous d'avoir lu, j'espère que vous en bénéficierez beaucoup.

Cet article est reproduit à partir de : https://blog.csdn.net/u010544319/article/details/9186323

Tutoriel recommandé : "

Tutoriel 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!

Étiquettes associées:
source:csdn.net
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