Heim >Backend-Entwicklung >PHP-Tutorial >Codeanalyse von Callback-Funktionen in PHP

Codeanalyse von Callback-Funktionen in PHP

烟雨青岚
烟雨青岚nach vorne
2020-06-09 13:24:332339Durchsuche

Codeanalyse von Callback-Funktionen in PHP

Code-Analyse der Rückruffunktion in PHP

Das Konzept der Rückruffunktion

Schauen wir uns zunächst die Callback-Funktion in C-Sprache an: Eine Callback-Funktion ist eine Funktion, die über einen Funktionszeiger aufgerufen wird. Wenn Sie einen Funktionszeiger (Adresse) als Parameter an eine andere Funktion übergeben und dieser Zeiger zum Aufrufen der Funktion verwendet wird, auf die er zeigt, sprechen wir von einer Callback-Funktion. Die Rückruffunktion wird nicht direkt vom Implementierer der Funktion aufgerufen, sondern von einer anderen Partei, wenn ein bestimmtes Ereignis oder eine bestimmte Bedingung eintritt, um auf das Ereignis oder die Bedingung zu reagieren.

Das Konzept der Rückruffunktionen in anderen Sprachen ist ähnlich, aber die Implementierungsmechanismen der Rückruffunktionen in verschiedenen Sprachen sind unterschiedlich. Im Allgemeinen ist die Rückruffunktion eine Funktion, die wir definieren, aber sie ist es nicht direkt Anstatt es über eine andere Funktion aufzurufen, ruft diese Funktion die Rückruffunktion auf, indem sie ihren Namen und ihre Parameter empfängt.

2. Die Rückruffunktion von in PHP

PHP bietet zwei integrierte Funktionen call_user_func( ) und call_user_func_array() bieten Unterstützung für Rückruffunktionen.

Der Unterschied zwischen diesen beiden Funktionen besteht darin, dass call_user_func_array die Parameter der Callback-Funktion in Form eines Arrays empfängt. Das können Sie anhand des Prototyps erkennen: Mixed call_user_func_array (callable $callback ,array$param_arr ), es hat nur zwei Parameter und die Anzahl der Parameter von call_user_func($callback, Parameter 1, Parameter 2,...) wird entsprechend den Parametern des bestimmt Rückruffunktion .

3. Implementierung der Callback-Funktion

So implementieren Sie globale Funktionen in Skripten, nicht statische Methoden, die $this nicht in Klassen verwenden, und nicht statische Methoden die $this in Klassen verwenden Was statische Methoden (die die Übergabe von Objekten erfordern) und Rückrufe statischer Methoden in Klassen betrifft, ist der folgende Code der Code, der den Test bestanden hat.

<?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;));

Vielen Dank an alle fürs Lesen, ich hoffe, Sie werden viel davon profitieren.

Dieser Artikel ist reproduziert von: https://blog.csdn.net/u010544319/article/details/9186323

Empfohlenes Tutorial: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonCodeanalyse von Callback-Funktionen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen