Die folgende Spalte des Workerman-Tutorials stellt Ihnen verschiedene Methoden zum Schreiben von PHP-Rückrufen vor. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!
wird häufig in workerman verwendet. Wir schreiben zunächst eine Rückruffunktion und verwenden diese Funktion, um die zugehörige Logik zu verarbeiten, wenn ein bestimmtes Verhalten ausgelöst wird.
Die am häufigsten verwendeten Callback-Schreibmethoden in PHP sind wie folgt
Anonyme Funktionen als Callbacks
Anonyme Funktionen, auch geschlossene Paketfunktionen (Abschlüsse) genannt ) ermöglichen die temporäre Erstellung einer Funktion ohne angegebenen Namen. Der Wert, der am häufigsten als Callback-Funktionsargument verwendet wird. Natürlich gibt es auch andere Anwendungen.
Der Rückruf einer anonymen Funktion weist diese häufig einer Variablen (oder einer Eigenschaft eines Objekts) zu.
$add = function($number1,$number2){ return $number1+$number2; }; echo $add(1,10);
Das Endergebnis ist 11.
Es gibt eine Verwendung von use, die mittlerweile von vielen Frameworks verwendet wird, einschließlich meines eigenen yii2-wx, das auch bei der Verarbeitung von WeChat-Zahlungsergebnisbenachrichtigungen verwendet wird.
Um es einfach auszudrücken: Wenn wir eine anonyme Funktion einrichten, können wir Variablen vom übergeordneten Bereich erben. Im folgenden Code
$number = 10; $add = function($number1,$number2) use ($number){ return $number1+$number2 + $number; }; echo $add(1,10);
ist das Ergebnis beispielsweise 21. Ja, Der anonyme Funktionskörper kann verwendet werden. Die geerbte Variable $number.
Zu beachten ist, dass diese Vererbung beim Definieren der Funktion festgelegt wird. Beispielsweise ist der folgende Code
$number = 10; $add = function($number1,$number2) use ($number){ return $number1+$number2 + $number; }; $number = 11; echo $add(1,10);
Das Ergebnis ist immer noch 21 und eine anschließende Neuzuweisung hat keine Auswirkung.
Wie lösen wir dann dieses Problem?
@nai8@
Legen Sie einfach die geerbte Variable wie folgt als Referenz fest
$number = 10; $add = function($number1,$number2) use (&$number){ return $number1+$number2 + $number; }; $number = 11; echo $add(1,10);
Fertig, 22 erscheint. 1 + 10 + 11;
In Workerman ist die allgemeine Verwendung anonymer Funktionen als Rückrufe wie folgt
use Workerman\Worker; require_once __DIR__ . '/Workerman/Autoloader.php'; $http_worker = new Worker("http://0.0.0.0:2345"); // 匿名函数回调 $http_worker->onMessage = function($connection, $data) { // 向浏览器发送hello world $connection->send('hello world'); }; Worker::runAll();
Gewöhnliche Funktionen als Rückrufe
Dies Die Verwendung existiert nicht. Darüber hinaus gibt es nicht so viele Details wie bei anonymen Funktionen. Schauen Sie sich einfach den Code an.
function add($number1,$number2){ return $number1+$number2; }; $add = "add"; echo $add(1,10);
Hier gibt es keine Verwendung, und die Reihenfolge der Funktionsdefinition und Zuweisung zu Variablen kann syntaktisch nach oben oder unten erfolgen. Dies ist nur eine Variablenzuweisung, die als hinzugefügt werden kann Der Rückruf besteht darin, dass wir add () verwenden. Die allgemeine Verwendung in Workerman lautet wie folgt:
use Workerman\Worker; require_once __DIR__ . '/Workerman/Autoloader.php'; $http_worker = new Worker("http://0.0.0.0:2345"); // 匿名函数回调 $http_worker->onMessage = 'on_message'; // 普通函数 function on_mesage($connection, $data) { // 向浏览器发送hello world $connection->send('hello world'); } Worker::runAll();
Klassenmethode als Rückruf
Klassenmethode nach dem Erlernen der Vorkenntnisse Da der Rückruf leicht zu erlernen ist, ein Satz Wörter: Verwenden Sie die öffentliche Methode einer Klasse als Rückruffunktion;
Direkte Verwendung in workerman
use Workerman\Worker; require_once __DIR__ . '/Workerman/Autoloader.php'; // 载入MyClass require_once __DIR__.'/MyClass.php'; $worker = new Worker("websocket://0.0.0.0:2346"); // 创建一个对象 $myObject = new MyClass(); $worker->onMessage = [$myObject, 'onMsg']; Worker::runAll();
Wir weisen die onMsg-Methode von MyClass als Rückruf zu an $worker->onMessage.
Statische Methode als Rückruf klassifizieren
Das ist die einfachste Methode, schauen Sie sich den Code an.
use Workerman\Worker; require_once __DIR__ . '/Workerman/Autoloader.php'; // 载入MyClass require_once __DIR__.'/MyClass.php'; $worker = new Worker("websocket://0.0.0.0:2346"); $worker->onMessage = [$myObject, 'onMsg']; Worker::runAll();
Wir weisen die statische Methode onMsg von MyClass als Callback zu worker->onMessage zu. Da es sich um eine statische Methode handelt, kann diese nicht in onMsg verwendet werden.
Das obige ist der detaillierte Inhalt vonMehrere PHP-Callback-Schreibmethoden, die Sie kennen müssen, bevor Sie Workerman lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!