Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Rückruftyp (Rückruf)

PHP-Rückruftyp (Rückruf)

伊谢尔伦
伊谢尔伦Original
2016-11-24 13:53:051217Durchsuche

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

Einer PHP-Funktion wird ihr Name als String-Typ übergeben. Es kann jede integrierte oder benutzerdefinierte Funktion verwendet werden, mit Ausnahme von Sprachkonstrukten wie: array(), echo, empty(), eval(), exit(), isset(), list(), print oder unset() .

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 Callback-Funktionsbeispiel

<?php
 
// An example callback function
function my_callback_function() {
   echo &#39;hello world!&#39;;
}
 
// An example callback method
class MyClass {
   static function myCallbackMethod() {
       echo &#39;Hello World!&#39;;
   }
}
 
// Type 1: Simple callback
call_user_func(&#39;my_callback_function&#39;);
 
// Type 2: Static class method call
call_user_func(array(&#39;MyClass&#39;, &#39;myCallbackMethod&#39;));
 
// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, &#39;myCallbackMethod&#39;));
 
// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func(&#39;MyClass::myCallbackMethod&#39;);
 
// 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(&#39;B&#39;, &#39;parent::who&#39;)); // A
?>

Beispiel #2 Beispiel für die Verwendung von Closure

<?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(&#39; &#39;, $new_numbers);
?>

Die obige Routine gibt Folgendes aus:

2 4 6 8 10

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.

Hinweis:

Wenn bei der Registrierung mehrerer Rückrufinhalte in einer Funktion (z. B. bei Verwendung von call_user_func() und call_user_func_array()) eine nicht abgefangene Ausnahme im vorherigen Rückruf vorliegt, wird dies nicht mehr der Fall sein aufgerufen werden.


Stellungnahme:
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