Workerman을 배우기 전에 알아야 할 몇 가지 PHP 콜백 작성 방법

藏色散人
풀어 주다: 2019-11-30 18:02:03
앞으로
2209명이 탐색했습니다.

다음 칼럼은 workerman 사용법 튜토리얼에서 PHP 콜백을 작성하는 여러 가지 방법을 소개하는 내용이 필요한 친구들에게 도움이 되기를 바랍니다!

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿