hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - Workerman - 正文 请牢记本站网址www.sosophp.cn

进修workerman之前须要晓得的几种php回调写法【workerman】,workerman

2019-11-30Workerman搜搜PHP网47°c
A+ A-
下面由 workerman运用教程栏目给人人引见几种php回调写法,愿望对须要的朋侪有所协助!

在workerman中会常常运用,我们先写一个回调函数,当某个行动被触发后运用该函数处置惩罚相干逻辑。

在PHP中最经常使用的几种回调写法以下

匿名函数做为回调

匿名函数(Anonymous functions),也叫闭包函数(closures),许可暂时建立一个没有指定称号的函数。最常经常使用作回调函数(callback)参数的值。固然,也有别的运用的状况。

匿名函数的回调常常将其赋给一个变量(或一个对象的属性)

$add = function($number1,$number2){
    return $number1+$number2;
};
echo $add(1,10);

终究效果会输出11。

这中心有一个use的用法,如今许多框架都在运用,包含我本身宣布的 yii2-wx 在处置惩罚微信付款效果关照的时刻也有用到。

简朴点说就是当我们设置了匿名函数的时刻,能够从父作用域继续变量,比方以下代码

$number = 10;
$add = function($number1,$number2) use ($number){
    return $number1+$number2 + $number;
};
echo $add(1,10);

则效果是21,没错,匿名函数体能够运用继续过来的变量 $number。

一点要注意的是,这类继续是在函数被定义的时刻就肯定了,比方以下代码

$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);

在这里没有use用法,而且函数定义和赋值给变量递次谁上谁下都能够,在语法上这只是对add的一次变量赋值,之所以能作为回调是我们运用了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();

类要领作为回调

进修了前面的学问,类的要领作为回调就好学了,一句话:将一个类的大众要领作为回调函数;

直接上在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();

我们将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要领作为回调赋值给worker->onMessage,由于是静态要领,在onMsg内不能用this哈。

以上就是进修workerman之前须要晓得的几种php回调写法的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
进修workerman之前须要晓得的几种php回调写法【workerman】,workerman

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: