在PHP中最常用的几种回调写法有哪些

  介绍

这篇文章主要介绍了在PHP中最常用的几种回调写法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

在workerman中会经常使用,我们先写一个回调函数,当某个行为被触发后使用该函数处理相关逻辑。

在PHP中最常用的几种回调写法如下

<强>匿名函数做为回调

匿名函数(匿名函数),也叫闭包函数(关闭),允许临时创建一个没有指定名称的函数。最经常用作回调函数(回调)参数的值。当然,也有其它应用的情况。

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

add 美元;=,函数(number1,科学美元){   ,,,return  number1 +科学美元;   };   echo 添加美元(10);

最终结果会输出11。

这中间有一个使用的用法,现在很多框架都在使用,包括我自己发布的yii2-wx在处理微信付款结果通知的时候也有用的到。

简单点说就是当我们设置了匿名函数的时候,可以从父作用域继承变量,比如如下代码

number 美元;=,10;   add 美元;=,函数(number1,科学美元),use (美元){   ,,,return  number1 + number2 美元+,美元数量;   };   echo 添加美元(10);

则结果是21日没错,匿名函数体可以使用继承过来的变量数量美元。

一点要注意的是,这种继承是在函数被定义的时候就确定了,比如如下代码

number 美元;=,10;   add 美元;=,函数(number1,科学美元),use (美元){   ,,,return  number1 + number2 美元+,美元数量;   };   $ number =, 11;   echo 添加美元(10);

结果还是21岁的后面重新的赋值并没有起到作用。

那我们如何解决这个问题那?

@nai8@

只需要将继承的变量设置为引用即可,如下

number 美元;=,10;   $ add =,函数(number1,科学美元),use (和数量美元){   ,,,return  number1 + number2 美元+,美元数量;   };   $ number =, 11;   echo 添加美元(10);

搞定了,22出现了。1 + 10 + 11;

在workerman中一般匿名函数作为回调用法如下

use  workerman \工人;   require_once  __DIR__ 只& # 39;/Workerman/Autoloader.php& # 39;;   $ http_worker =, new 工人(“http://0.0.0.0:2345");//,匿名函数回调   时间=美元http_worker→onMessage 函数(连接美元,,数据)   {   ,,,//,向浏览器发送hello 世界   ,,,连接→美元发送(& # 39;hello  & # 39;);   };   工人:runAll ();

<>强普通函数作为回调

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

function 添加(number1,科学美元){   ,,,return  number1 +科学美元;   };   时间=美元add “add";   echo 添加美元(10);

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

use  workerman \工人;   require_once  __DIR__ 只& # 39;/Workerman/Autoloader.php& # 39;;   $ http_worker =, new 工人(“http://0.0.0.0:2345");//,匿名函数回调   时间=美元http_worker→onMessage  & # 39; on_message& # 39;;//,普通函数   function  on_mesage(连接,美元,美元数据)   {   ,,,//,向浏览器发送hello 世界   ,,,连接→美元发送(& # 39;hello  & # 39;);   }   工人:runAll ();

<强>类方法作为回调

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

直接上在workerman中的用法

use  workerman \工人;   require_once  __DIR__ 只& # 39;/Workerman/Autoloader.php& # 39;;//,载入MyClass   require_once  __DIR__强生# 39;/MyClass.php& # 39;;   $ worker =, new 工人(“websocket://0.0.0.0:2346");//,创建一个对象   $ myObject =, new  MyClass ();   工人→美元onMessage ,,=, (myObject美元,& # 39;onMsg& # 39;];   工人:runAll ();

我们将MyClass的onMsg方法作为回调赋值给工人→美元onMessage。

在PHP中最常用的几种回调写法有哪些