Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Callback-Funktion und Anwendungsfallanalyse anonymer Funktionen

PHP-Callback-Funktion und Anwendungsfallanalyse anonymer Funktionen

php中世界最好的语言
Freigeben: 2023-03-26 13:24:01
Original
1551 Leute haben es durchsucht

Dieses Mal werde ich Ihnen eine Anwendungsfallanalyse der PHP-Rückruffunktion und der anonymen Funktion vorstellen und welche Vorsichtsmaßnahmen bei der Verwendung der PHP-Rückruffunktion gelten anonyme Funktion Das Folgende ist ein praktischer Fall, schauen wir uns das an.

1. Rückruffunktion

Die Rückruffunktion von PHP hat tatsächlich die gleiche Funktion wie die Rückruffunktion in C, Java und anderen Sprachen Bei der Ausführung des Hauptthreads wird plötzlich gesprungen, um die festgelegte Rückruffunktion auszuführen.

Nachdem die Rückruffunktion ausgeführt wurde, kehrt sie zum Hauptthread zurück, um den nächsten Prozess zu verarbeiten

Und der Rückruf ist In PHP aufgerufene Funktionen möchten den Funktionsnamen nicht direkt als Funktionsparameter wie C und Java verwenden. Verwenden Sie stattdessen den der Funktion entsprechenden Zeichenfolgennamen in PHP, um

1.1, Parameterloser Rückruf

<?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.
Nach dem Login kopieren
auszuführen

1.2, globale Rückruffunktion

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

1.3, Klassenmethode und statischer Methodenrückruf

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

2, anonyme Funktion

2.1, in PHP Anonyme Funktionen, auch Schließungen genannt, ermöglichen es Ihnen, eine Funktion ohne Namen anzugeben. Die am häufigsten verwendeten sind die Parameter des Rückrufs Funktion Wert

<?php
$closureFunc = function($str){
  echo $str.'<br/>';
};
$closureFunc("hello world!");
//结果
hello world!
Nach dem Login kopieren

2.2, Abschluss

2.2.1, die Übergabe von Parametern und die Referenzierung lokaler Variablen

<?php
$closureFunc = function($name){
  $sex = '男';
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23
Nach dem Login kopieren

2.2.2. Return-Abschlussfunktion

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

2.2.3. Der Abschluss ändert den Wert des Kontexts, was eine Referenzübertragung erfordert

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

Das Obige ist ein Durch einfache Anwendung des Abschlusses können wir erkennen, dass der an den Abschluss übergebene Parameterinhalt tatsächlich der Inhalt des Kontextobjekts sein kann, wenn ein Abschluss außerhalb einer Funktion verwendet wird innerhalb des Abschlusses geändert werden, aber es muss Es handelt sich um eine Referenzübergabe

Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln zu PHP Chinesische Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Implementierung der Einweg-Hash-Verschlüsselung in PHP


Detaillierte Erläuterung von die Schritte zum Ausblenden der Eintragsdatei in PHP

Das obige ist der detaillierte Inhalt vonPHP-Callback-Funktion und Anwendungsfallanalyse anonymer 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