Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der PHP-Callback-Callback-Funktion
Seit PHP 5.4 kann der Callable-Typ zur Angabe des Callback-Typs Callback verwendet werden. Aus demselben Grund werden in diesem Dokument Rückruftypinformationen verwendet.
Einige Funktionen wie call_user_func() oder usort() können benutzerdefinierte Callback-Funktionen als Parameter akzeptieren. Die Rückruffunktion kann nicht nur eine einfache Funktion sein, sondern auch eine Objektmethode, einschließlich statischer Klassenmethoden.
Übergabe
Eine PHP-Funktion übergibt ihren Namen als String-Typ. Es kann jede integrierte oder benutzerdefinierte Funktion verwendet werden, mit Ausnahme von Sprachkonstrukten wie: array() , echo , empty() , eval() , exit() , isset() , list() , print oder unset() . Die Methoden eines instanziierten Objekts werden als Array übergeben, wobei Index 0 das Objekt und Index 1 den Methodennamen enthält.
Statische Klassenmethoden können auch ohne Instanziierung eines Objekts der Klasse übergeben werden, indem der Klassenname anstelle des Objekts in den Index 0 eingefügt wird. Seit PHP 5.2.3 ist es auch möglich, 'ClassName::methodName' zu übergeben.
Zusätzlich zu gewöhnlichen benutzerdefinierten Funktionen kann create_function() verwendet werden, um eine anonyme Rückruffunktion zu erstellen. Seit PHP 5.3.0 ist es auch möglich, einen Abschluss an den Callback-Parameter zu übergeben.
Beispiel #1 Rückruffunktionsbeispiel
Beispiel #2 Beispiel mit Abschluss<?php // An example callback function function my_callback_function () { echo 'hello world!' ; } // An example callback method class MyClass { static function myCallbackMethod () { echo 'Hello World!' ; } } // Type 1: Simple callback call_user_func ( 'my_callback_function' ); // Type 2: Static class method call call_user_func (array( 'MyClass' , 'myCallbackMethod' )); // Type 3: Object method call $obj = new MyClass (); call_user_func (array( $obj , 'myCallbackMethod' )); // Type 4: Static class method call (As of PHP 5.2.3) call_user_func ( 'MyClass::myCallbackMethod' ); // Type 5: Relative static class method call (As of PHP 5.3.0) class A { public static function who () { echo "A\n" ; } } class B extends A { public static function who () { echo "B\n" ; } } call_user_func (array( 'B' , 'parent::who' )); // A ?>Die obige Routine gibt Folgendes aus:
<?php // Our closure $double = function( $a ) { return $a * 2 ; }; // This is our range of numbers $numbers = range ( 1 , 5 ); // Use the closure as a callback here to // double the size of each element in our // range $new_numbers = array_map ( $double , $numbers ); print implode ( ' ' , $new_numbers ); ?>Hinweis: In PHP 4 müssen Sie eine Referenz verwenden, um eine Rückruffunktion zu erstellen, die auf ein bestimmtes Objekt verweist, und nicht auf eine Kopie. Erläuterungen finden Sie im Zitat.
2 4 6 8 10
Wenn mehrere Rückrufe in einer Funktion registriert sind (z. B. bei Verwendung von call_user_func() und call_user_func_array()) und es im vorherigen Rückruf eine nicht abgefangene Ausnahme gibt, werden die nachfolgenden nicht mehr aufgerufen.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Callback-Callback-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!