다음 칼럼은 workerman 사용법 튜토리얼에서 PHP 콜백을 작성하는 여러 가지 방법을 소개하는 내용이 필요한 친구들에게 도움이 되기를 바랍니다!
는 workerman에서 자주 사용됩니다. 먼저 콜백 함수를 작성하고 이 함수를 사용하여 특정 동작이 트리거될 때 관련 로직을 처리합니다.
PHP에서 가장 일반적으로 사용되는 콜백 작성 방법은 다음과 같습니다
익명 함수는 콜백으로 사용됩니다.
익명 함수(익명 함수)는 클로저라고도 불리며 지정된 이름 없이 함수를 임시로 생성할 수 있도록 해줍니다. 콜백 함수 인수로 가장 일반적으로 사용되는 값입니다. 물론 다른 응용 프로그램도 있습니다.
익명 함수의 콜백은 이를 변수(또는 개체의 속성)에 할당하는 경우가 많습니다.
$add = function($number1,$number2){ return $number1+$number2; }; echo $add(1,10);
최종 결과는 11입니다.
weChat 결제 결과 알림을 처리할 때에도 사용되는 자체 yii2-wx를 포함하여 현재 많은 프레임워크에서 사용되는 use라는 사용법이 있습니다.
간단히 말하면 익명 함수를 설정할 때 상위 범위에서 변수를 상속할 수 있습니다. 예를 들어 다음 코드
$number = 10; $add = function($number1,$number2) use ($number){ return $number1+$number2 + $number; }; echo $add(1,10);
에서 결과는 21입니다. 예, 익명 함수 본문은 상속된 범위를 사용할 수 있습니다. 변수 $번호.
한 가지 주목해야 할 점은 이 상속은 함수가 정의될 때 결정된다는 것입니다. 예를 들어 다음 코드는
$number = 10; $add = function($number1,$number2) use ($number){ return $number1+$number2 + $number; }; $number = 11; echo $add(1,10);
결과가 여전히 21이고 후속 재할당은 효과가 없습니다.
그럼 이 문제를 어떻게 해결하나요?
@nai8@
다음과 같이 상속된 변수를 참조로 설정하면 됩니다.
$number = 10; $add = function($number1,$number2) use (&$number){ return $number1+$number2 + $number; }; $number = 11; echo $add(1,10);
완료하면 22가 나타납니다. 1 + 10 + 11;
Workerman에서 익명 함수를 콜백으로 사용하는 일반적인 방법은 다음과 같습니다.
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();
일반적인 함수를 콜백으로 사용하는 경우
익명만큼 자세한 내용은 없습니다. 함수를 살펴보세요.
function add($number1,$number2){ return $number1+$number2; }; $add = "add"; echo $add(1,10);
여기서는 용도가 없고, 함수 정의 순서와 변수 할당 순서는 위아래가 될 수 있습니다. 구문상으로 이것은 단지 추가할 변수 할당일 뿐입니다. add()를 사용하면 Workerman의 일반적인 사용법은 다음과 같습니다
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();
Class 메소드를 콜백으로
이전 지식을 학습한 후 콜백으로 클래스 메소드를 익히면 쉽습니다. 콜백 함수로서의 클래스;
workererman에서의 사용법
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();
MyClass의 onMsg 메소드를 $worker->onMessage에 대한 콜백으로 할당합니다.
콜백으로서의 클래스 정적 메서드
이것이 가장 간단합니다. 코드를 살펴보세요.
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();
MyClass의 정적 메서드 onMsg를 작업자->onMessage에 대한 콜백으로 할당합니다. 정적 메서드이므로 onMsg에서는 사용할 수 없습니다.
위 내용은 Workerman을 배우기 전에 알아야 할 몇 가지 PHP 콜백 작성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!