Heim  >  Artikel  >  PHP-Framework  >  Mehrere PHP-Callback-Schreibmethoden, die Sie kennen müssen, bevor Sie Workerman lernen

Mehrere PHP-Callback-Schreibmethoden, die Sie kennen müssen, bevor Sie Workerman lernen

藏色散人
藏色散人nach vorne
2019-11-28 13:38:072203Durchsuche

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!

Mehrere PHP-Callback-Schreibmethoden, die Sie kennen müssen, bevor Sie Workerman lernen

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Beispieltest für ArbeiterNächster Artikel:Beispieltest für Arbeiter