美文网首页
Swoole基础知识之设置回调函数的方式

Swoole基础知识之设置回调函数的方式

作者: 十年磨一剑1111 | 来源:发表于2020-07-28 15:44 被阅读0次

最近一直在学习swoole的一些知识,手册大致浏览了一遍,但是收获不大,很多东西都记不住,于是决定还是做下学习笔记加深印象。关于回调相信做过开发的小伙伴都不会太陌生,举个很简单的例子:比如我们做的一些支付功能往往需要客户端设置一个回调地址,等待支付成功后服务端就会将支付的结果写到这个回调地址上来,然后客户端就知道支付的结果了。不过下面要说的回调和这个是有区别的,但是相同的是:都是当某个事件发生就会触发绑定好的事件执行,下面来介绍下四种设置回调函数的方式。

1. 匿名函数

匿名函数可以简单的理解为没有设置名字的函数,示例:

$a = $b = $c = 1;
$server->on('Request',function($reg,$resp) use ($a,$b,$c){
     echo 'hello,world';
})

外部传入的参数可以放在function()里面传入,例如:$reg$resp,也可以放到use()里面传入,如果在匿名函数里面修改这三个参数是不会影响外面对应的变量值。下面来举个简单的例子验证下:

<?php
$a = 1;
$func = function() use($a) {
     $a = 2;
};
$func($a);
echo $a;

输出结果:1

2. 类静态方法

静态方法:static 修饰的方法

class A {
    static function test($req,$resp){
       echo 'hello world';
    }
}
$server->on('Request','A::Test');
$server->on('Request',array('A','Test'));

将静态方法test作为Request方法的回调函数,也就是当请求成功后会执行test方法。这里的第二种方法是传入一个数组形式的,这种方式比较少见,暂时先记下来吧。不过需要注意的是静态方法test必须为public,这个也很好理解如果不是public的访问权限的话,类的外部是不能访问的。

3. 函数

func my_onRequest($req,$resp){
     echo 'hello world';
}
$server->on('Request','my_onRequest');

这个可以和匿名函数的区别就是:回调函数单独提出来了。记忆的时候可以和匿名函数一起记忆。

4. 对象方法

class A
{
    function test($req, $resp)
    {
        echo "hello world";
    }
}

$object = new A();
$server->on('Request', array($object, 'test'));

test方法也必须为public,这个可以和静态方法放在一起记忆。上面这段代码是摘自swoole官方文档,不过笔者觉得在设置回调的时候还可以这么写:$server->on('Request', $object->test(); 为了验证笔者的猜想,下面写个例子测试下:

class A
{
    function test($req, $resp)
    {
        echo "hello world";
    }
}

$object = new A();
$http = new Swoole\Http\Server("127.0.0.1", 9501);
$http->on('request', $obj->test);
$http->start();

输出结果:PHP Fatal error: Uncaught TypeError: Argument 2 passed to Swoole\Server::on() must be callable, null given in /srv/swoole/course_code/04/test01.php:28
Stack trace
所以不能这么写
总结一下:这四种方法可以按照自己的习惯来写吧,不过匿名函数这种方式目前最常用的一种方式吧。

相关文章

  • Swoole基础知识之设置回调函数的方式

    最近一直在学习swoole的一些知识,手册大致浏览了一遍,但是收获不大,很多东西都记不住,于是决定还是做下学习笔记...

  • OpenCV 教程 02 : 创建滑块

    示例代码 回调函数方式 非回调函数方式 运行结果

  • JavaScript系列之回调函数callback

    JavaScript系列之回调函数callback JavaScript回调函数的使用是很常见的,引用官方回调函数...

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • vue全局路由守卫

    1.拦截住所有的跳转,执行回调函数 三种方式设置路由守卫

  • python之回调函数和装饰函数

    一.回调函数 1.回调函数的概念: 是在某一函数中调用另一个函数变量方式,来执行函数.回调函数不是有实现方调用,...

  • node 异步编程

    回调函数方式缺点:回调地狱、异步并发控制困难 Promise Async / Await

  • js数组方法的使用 some与every

    Array.some:对目标数组进行遍历,并对每次遍历带有回调函数,回调函数设置对应的判断,当其中一次遍历的回调函...

  • 回调函数

    回调函数其实就是函数指针的简单使用,目的在于让代码更具有模块化的思想。 1、基础知识 所谓回调,就是模块1要通过模...

  • [Angular]依赖注入

    JS中的依赖注入,举个荔枝: 1.回调函数的event就是依赖对象2.回调函数有形参就是依赖注入(设置方法或者函数...

网友评论

      本文标题:Swoole基础知识之设置回调函数的方式

      本文链接:https://www.haomeiwen.com/subject/duufrktx.html