学习workerman之前需要知道的几种php回调写法

在workerman中会经常使用,我们先写一个回调函数,当某个行为被触发后使用该函数处理相关逻辑。
在PHP中最常用的几种回调写法如下
匿名函数做为回调
匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
匿名函数的回调经常将其赋给一个变量(或一个对象的属性)

最终结果会输出11。
这中间有一个use的用法,现在很多框架都在使用,包括我自己发布的 yii2-wx 在处理微信付款结果通知的时候也有用到。
简单点说就是当我们设置了匿名函数的时候,可以从父作用域继承变量,比如如下代码

则结果是21,没错,匿名函数体可以使用继承过来的变量 $number。
一点要注意的是,这种继承是在函数被定义的时候就确定了,比如如下代码

结果还是21,后面重新的赋值并没有起到作用。
那我们如何解决这个问题那?
@nai8@
只需要将继承的变量设置为引用即可,如下

搞定了,22出现了。1 + 10 + 11;
在workerman中一般匿名函数作为回调用法如下

普通函数作为回调
这种用法并没有什么可以多说的,不像匿名函数那么多细节,直接看代码。

在这里没有use用法,并且函数定义和赋值给变量顺序谁上谁下都可以,在语法上这只是对add的一次变量赋值,之所以能作为回调是我们使用了add() 导致的,在workerman中一般用法如下

类方法作为回调
学习了前面的知识,类的方法作为回调就好学了,一句话:将一个类的公共方法作为回调函数;
直接上在workerman中的用法

我们将MyClass的onMsg方法作为回调赋值给$worker->onMessage。
类静态方法做为回调
这个最简单了,看代码。

我们将MyClass的静态方法onMsg方法作为回调赋值给worker->onMessage,因为是静态方法,在onMsg内不能用this哈。
以上就是学习workerman之前需要知道的几种php回调写法的详细内容
有需要学习交流的友人请加入Swoole交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!
学习workerman之前需要知道的几种php回调写法的更多相关文章
- 风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二)
风炫安全web安全学习第三十七节课 15种上传漏洞讲解(二) 05后缀名黑名单校验之上传.htaccess绕过 还是使用黑名单,禁止上传所有web容器能解析的脚本文件的后缀 $is_upload = ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...
- React内三种函数的写法
以下提供三种React内函数的写法,都可以正常运行,有疑问可以留言 写法一:让函数内部的this指向这个类的实例,它是用bind实现的,bind的第一个参数表示context,就是this. //写 ...
- 4种PHP回调函数风格
4种PHP回调函数风格 匿名函数 $server->on('Request', function ($req, $resp) use ($a, $b, $c) { echo "hell ...
- HTML有2种路径的写法:绝对路径和相对路径
HTML有2种路径的写法:绝对路径和相对路径 2016年11月30日 17:51:20 Bolon0708 阅读数 21775 版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...
- Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较
我们经常要在客户端进行数据查询,下面分别比较常用的几种查询方式:XMLHttpRequest, SDK.JQuery, SDK.Rest. XMLHttpRequest是最基本的调用方式,JQuery ...
- [原创]java WEB学习笔记89:Hibernate学习之路-- -Hibernate检索方式(5种),HQL介绍,实现功能,实现步骤,
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- opengl基础学习专题 (三) 多边形绘制的几种样式
题外话 聪明人之所以不会成功,是由于他们缺乏坚韧的毅力. ——艾萨克·牛顿(1643年1月4日—1727年3月31日)英国 也许可以理解为 想更深一步的时候,坚持,努力和聪明缺一不可. 挺直腰杆在此向 ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
随机推荐
- MHA在监控和故障转移时都做了什么
转自 https://blog.csdn.net/ashic/article/details/75645479 以下是MHA(masterha_manager)在监控和故障切换上的基本流程 验证复制配 ...
- GithubPages+Hexo博客搭建记录
目录 前言 安装Node.js 安装Git 安装Hexo 查看效果 建立Github Pages 注册Github帐户 建立托管博客的仓库 制作SSH密钥 添加公钥到Github 测试连接 把本地的博 ...
- echarts堆叠图计算总数和各部分
app.title = '堆叠条形图'; option = { tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type ...
- 在mysql中如何写注释
MySql--三种注释写法 #这是注释/*注释内容*/ -- 注释 (--与注释内容之间必须加空格)
- python语言程序设计基础(第二版)第五章答案随笔
1.实现isOdd()函数,参数为整数,如果整数是奇数,返回True,否则返回False def isOdd(num): if num % 2 == 0: return True ...
- C++ 如何用百行代码实现线程安全的并发队列 | concurrent queue or blocking queue implemented in cpp
本文首发于个人博客https://kezunlin.me/post/cabccf5c/,欢迎阅读最新内容! concurrent queue or blocking queue implemented ...
- c博客06-结构体&文件
1.本章学习总结 1.1 学习内容总结 结构体的定义.成员的赋值: 结构体的一般定义形式(单独定义): struct 结构名 { 类型名 结构体成员名1; 类型名 结构体成员名2; ... 类型名 结 ...
- Docker 系列之 基础入门
安装 Docker Windows 10 专业版以上版本 Docker for Windows Installer 在安装前,需要确保目标机器已经开启了硬件虚拟化和 HyperV :在安装的过程中建议 ...
- SSM整合3(springMVC+mybatis)
一.RequestMapping URL路径映射:置于方法上,可多个URL映射同一个方法,格式:@RequestMapping(value="item")或@RequestMapp ...
- django中使用pandas Django-pandas
在django中使用pandas操作django的ORM查询出来的QuerySet对象,可以使用插件django-pandas. 截止教程书写时间,django-pandas已发布到0.6.1. 依赖 ...