Heim > PHP-Framework > Workerman > Hauptteil

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

藏色散人
Freigeben: 2019-11-30 18:02:03
nach vorne
2143 Leute haben es durchsucht

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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();
Nach dem Login kopieren

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);
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
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!