Verwendung der PHP-Callback-Funktion

王林
Freigeben: 2023-05-28 20:14:06
Original
741 Leute haben es durchsucht

Die Rückruffunktion ist eine weit verbreitete Technologie in der PHP-Programmierung und auch ein Problem, auf das Anfänger unzählige Male stoßen. Der richtige Einsatz von Callback-Funktionen kann Ihr PHP-Programm flexibler und intelligenter machen.

1. Was ist eine Rückruffunktion?

Einfach ausgedrückt ist eine Rückruffunktion ein ausführbarer Codeblock, der bei Bedarf dynamisch aufgerufen werden kann. Ursprünglich wurde es hauptsächlich für die Ereignisverarbeitung verwendet, heute wird es jedoch auch häufig zur Implementierung von Template-Engines, Datenverarbeitung und anderen Funktionen verwendet.

Ein Vorteil von Rückruffunktionen ist die Abstraktion. Wenn Sie eine einfache Schnittstelle verwenden möchten, damit Benutzer die zu implementierende Funktion aufrufen können, können Sie über die Rückruffunktion eine Schnittstelle bereitstellen und den Benutzern die Möglichkeit geben, ihre eigenen Implementierungsmethoden zu übergeben. Wenn das Programm ausgeführt wird, verwendet Ihr Programm die übergebenen Methoden, um bestimmte Funktionen auszuführen.

2. Verwendungsszenarien von Rückruffunktionen

Rückruffunktionen haben viele Anwendungsszenarien, die im Folgenden vorgestellt werden:

  1. Ereignisverarbeitung

Die Rückruffunktion in der Ereignisverarbeitung kann als Parameter an die Ereignisverarbeitungsfunktion übergeben werden Reaktion auf das Ereignis Automatisch ausgelöst. Beispielsweise können Sie auf einer PHP-Website ein Formular haben, das bei der Übermittlung ein Ereignis auslöst. Sie möchten den Code schreiben, um das Formular dort zu verarbeiten, wo es verwendet wird. Zu diesem Zeitpunkt müssen Sie den Verarbeitungscode in eine Rückruffunktion kapseln und ihn als Parameter an die Formularverarbeitungsfunktion übergeben.

  1. Datenverarbeitung

Rückruffunktionen können auch als Parameter von Datenverarbeitungsfunktionen verwendet werden, z. B. Array-Sortierfunktionen und Datenfilterfunktionen. Sie können Rückruffunktionen verwenden, um die Art und Weise, wie ein Array sortiert wird, oder um Datenfilterungsmethoden anzupassen. Wenn Sie beispielsweise einen bestimmten Wert in einem Array suchen möchten, aber auch die Situation beibehalten möchten, in der mehrere Werte im Array gefunden werden, können Sie eine Rückruffunktion schreiben und diese Funktion während der Array-Suche verwenden, um alle hinzuzufügen passende Werte. Rückkehr zu einem neuen Array.

  1. Template-Engine

Callback-Funktionen werden häufig in Template-Engines verwendet, um Anweisungen und benutzerdefinierte Funktionen in Vorlagen zu erweitern. Beispielsweise wird die foreach-Schleifensyntax in einer Vorlage verwendet, um die Daten in einem Array zu durchlaufen und in der Vorlage anzuzeigen. Der Grund, warum die foreach-Syntax unterstützt wird, besteht darin, dass intern eine Rückruffunktion verwendet wird, um den Datendurchlauf zu implementieren.

3. Wie definiere ich Callback-Funktionen

Wie definiere und verwende ich Callback-Funktionen in PHP? Es ist eigentlich ganz einfach. In PHP können Rückruffunktionen entweder „normale Funktionen“ oder „anonyme Funktionen“ sein. Definieren Sie eine normale Funktion als Callback-Funktion

    Beispielcode:
  1. <?php
    function my_callback_function() {
        echo 'Hello World!';
    }
    
    call_user_func('my_callback_function');
    ?>
    Nach dem Login kopieren
  2. Die Ausgabe dieses Codes lautet: Hallo Welt!

Definieren Sie eine anonyme Funktion als Rückruffunktion

    Beispielcode:
  1. <?php
    $my_callback = function () {
        echo 'Hello World!';
    };
    
    call_user_func($my_callback);
    ?>
    Nach dem Login kopieren
  2. Die Ausgabe dieses Codes lautet: Hallo Welt!

Eine noch einfachere Möglichkeit ist die Verwendung von Pfeilfunktionen.

Beispielcode:

<?php
call_user_func(fn() => 'Hello World!');
?>
Nach dem Login kopieren

Das Ausgabeergebnis dieses Codes ist auch: Hello World!

4. So verwenden Sie die Callback-Funktion

Bei Verwendung der Callback-Funktion können Sie die in PHP integrierten Funktionen call_user_func() und call_user_func_array() verwenden.

call_user_func()-Verwendungsmethode

    Die Funktion call_user_func() wird verwendet, um die Rückruffunktion aufzurufen und die Parameter als Parameter der Funktion zu übergeben. Die Syntax dieser Funktion lautet wie folgt:
  1. mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
    Nach dem Login kopieren
  2. Hinweis: Der Callback-Parameter hier muss den Namen der Callback-Funktion oder der in einer Variablen gespeicherten Callback-Funktion übergeben.

Beispielcode:

<?php
function my_callback_function($string) {
    echo 'Hello ' . $string . "
";
}

call_user_func('my_callback_function', 'World');
?>
Nach dem Login kopieren

Das Ausgabeergebnis dieses Codes ist: Hello World

.

So verwenden Sie call_user_func_array()

    Die Funktion call_user_func_array() ähnelt der Funktion call_user_func(), verwendet jedoch ein Array als Parameter der Rückruffunktion. Die Syntax dieser Funktion lautet wie folgt:
  1. mixed call_user_func_array ( callable $callback , array $param_arr )
    Nach dem Login kopieren
  2. Hinweis: Der Callback-Parameter hier muss den Namen der Callback-Funktion oder der in einer Variablen gespeicherten Callback-Funktion übergeben.

Beispielcode:

<?php
function product($a, $b)
{
    return $a * $b;
}

// 回调函数作为参数
echo call_user_func_array('product', array(4, 5)) . "
";
?>
Nach dem Login kopieren

Die Ausgabe dieses Codes ist: 20.

5. Anwendungsfälle von Rückruffunktionen

Array-Sortierung

    In der Array-Funktion kann die Rückruffunktion das Array durch Angabe einer Vergleichsfunktion nach der angegebenen Methode sortieren. Zum Beispiel möchten wir ein Array in der Reihenfolge von klein nach groß anordnen:
  1. Beispielcode:
<?php
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);
usort($a, 'cmp');

print_r($a);
?>
Nach dem Login kopieren

Die Funktion usort() wird hier verwendet, um das Array zu sortieren, wobei der erste Parameter das zu sortierende Array ist und der Der zweite Parameter ist die Callback-Funktion.

Das Ausgabeergebnis dieses Codes ist: Array ([0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 ).

Datenfilterung

    In der Datenfilterfunktion kann die Rückruffunktion die Daten im Array gemäß der angegebenen Methode filtern, indem sie die Filterfunktion angibt. Zum Beispiel möchten wir die Zahlen in einem Array herausfiltern:
  1. Beispielcode:
<?php
function is_number($var) {
    if (is_numeric($var)) {
        return true;
    } else {
        return false;
    }
}

$array = array(1, 'abc', 2, 'def', 3, 'ghi');
var_dump(array_filter($array, 'is_number'));
?>
Nach dem Login kopieren

Im obigen Code wird die Funktion array_filter() verwendet. Der erste Parameter der Funktion ist das Array und der zweite Parameter Die Rückruffunktion gibt an, dass nur Daten zurückgegeben werden, die die Bedingungen der Funktion is_number() erfüllen.

Die Ausgabe dieses Codes ist: array(3) { [0]=>(1) [2]=>(2) [4]=>

  1. 模板引擎

在模板引擎中,回调函数往往用来扩充模板中的标签。例如我们现在要开发一个简单的模板引擎,实现将模板中的include标签替换为使用PHP include函数的功能:

示例代码:

<?php
function replace_include($template) {
    $template = preg_replace_callback('#{{include file=(.*?)}}#', function($match) {
        return "<?php include ".trim($match[1])."; ?>";
    }, $template);

    return $template;
}

$template = '{{include file="included.php"}}';
$template = replace_include($template);

echo $template;
?>
Nach dem Login kopieren

在上面的代码中,使用了preg_replace_callback()函数,该函数的第一个参数为正则表达式,第二个参数回调函数。该回调函数将匹配到的值替换为PHP include函数。

该代码的输出结果为:

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

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!