Das Konzept und die Verwendung von PHP-Callback-Funktionen

墨辰丷
Freigeben: 2023-03-26 10:32:02
Original
1189 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich das Konzept und die Verwendung der PHP-Rückruffunktion vorgestellt, das Konzept und das Prinzip der Rückruffunktion kurz vorgestellt und die damit verbundenen Verwendungsfähigkeiten der Rückruffunktion anhand von Beispielen analysiert

Die Details sind wie folgt:

1. Das Konzept der Rückruffunktion

Sehen Sie sich zunächst die Rückruffunktion in C-Sprache an : Die Rückruffunktion ist eine Passfunktion. Die vom Zeiger aufgerufene Funktion. 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. Implementierung von Callback-Funktionen in PHP

php bietet zwei integrierte Funktionen call_user_func() und call_user_func_array(), die Callback-Funktionen bereitstellen Unterstützung. Der Unterschied zwischen diesen beiden Funktionen besteht darin, dass call_user_func_array die Parameter der Callback-Funktion in Form eines Arrays empfängt. Sie können es anhand seines Prototyps erkennen: mixed call_user_func_array ( callable $callback , array $param_arr ) , es hat nur zwei Parameter. Und call_user_func($callback, Parameter 1, Parameter 2,...) Die Anzahl der Parameter von wird entsprechend den Parametern der Callback-Funktion bestimmt.

So implementieren Sie Rückrufe für globale Funktionen in Skripten, nicht statische Methoden, die $this nicht in Klassen verwenden, nicht statische Methoden, die $this in Klassen verwenden (Objekte müssen übergeben werden) und statische Methoden In Klassen ist der Code, der den Test bestanden hat, wie folgt.

<?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;));
Nach dem Login kopieren

Laufergebnis:

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
Nach dem Login kopieren

Verwandte Empfehlungen:

Wie Promise die Callback-Funktion im Code ersetzt

Detaillierte Erläuterung des Anwendungsfalls der JS-Callback-Funktion

Fallbeschreibung der JS-Callback-Funktion verwenden

Das obige ist der detaillierte Inhalt vonDas Konzept und die Verwendung von PHP-Callback-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage