workerman中经常用到。我们先写一个回调函数,当某个行为被触发时,通过这个函数来处理相关的逻辑。PHP中最常用的回调函数如下。匿名函数用作回调。匿名函数(Anonymousfunctions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最常用作回调函数(callback)参数的值。当然,还有其他应用程序。匿名函数的回调通常将其分配给变量(或对象的属性)$add=function($number1,$number2){return$number1+$number2;};回声$添加(1,10);最后的结果就是Output11。中间有个use,现在很多框架都在用,包括我自己发布的yii2-wx,在处理微信支付结果通知的时候也会用到。简单的说,当我们设置匿名函数时,我们可以从父作用域继承变量,比如下面的代码$number=10;$add=function($number1,$number2)使用($number){return$number1+$number2+$number;};回声$添加(1,10);结果是21,是的,匿名函数体可以使用继承变量$number。需要注意的一点是,这种继承是在定义函数的时候就确定的,比如下面的代码$number=10;$add=function($number1,$number2)使用($number){return$number1+$number2+$number;};$number=11;echo$add(1,10);结果还是21,后面重新赋值也没有效果。那么我们如何解决这个问题呢?@nai8@只需要将继承的变量设置为引用即可,如下$number=10;$add=function($number1,$number2)使用(&$number){return$number1+$number2+$number;};$number=11;echo$add(1,10);完成后,出现22。1+10+11;在workerman中,一般的匿名函数作为回调使用如下:useWorkerman\Worker;require_once__DIR__。'/Workerman/Autoloader.php';$http_worker=newWorker("http://0.0.0.0:2345");//匿名函数回调$http_worker->onMessage=function($connection,$data){//向浏览器发送helloworld$connection->send('helloworld');};Worker::runAll();使用普通函数作为回调就没什么好说的了。没有匿名函数那么详细,直接看代码就好了。functionadd($number1,$number2){return$number1+$number2;};$add="add";echo$add(1,10);这里没有use用法,函数定义和赋值给变量的顺序在上,大家可以下载。就语法而言,这只是对$add的变量赋值。之所以可以作为回调,是因为我们使用了$add()。workerman中的一般用法如下:useWorkerman\Worker;require_once__DIR__。'/Workerman/Autoloader.php';$http_worker=newWorker("http://0.0.0.0:2345");//匿名函数回调$http_worker->onMessage='on_message';//普通函数functionon_mesage($connection,$data){//向浏览器发送helloworld$connection->send('helloworld');}Worker::runAll();类方法作为回调学习前面的知识,类方法作为回调很容易学一句话:用一个类的public方法作为回调函数;直接使用Workerman\Worker;require_once__DIR__。'/Workerman/Autoloader.php';//加载MyClassrequire_once__DIR__.'/MyClass.php';$worker=newWorker("websocket://0.0.0.0:2346");//创建对象$myObject=newMyClass();$worker->onMessage=[$myObject,'onMsg'];工人::runAll();我们将MyClass的onMsg方法作为回调分配给$worker->onMessage。使用类静态方法作为回调是最简单的,请参阅代码。使用Workerman\Worker;require_once__DIR__。'/Workerman/Autoloader.php';//加载MyClassrequire_once__DIR__.'/MyClass.php';$worker=newWorker("websocket://0.0.0.0:2346");$worker->onMessage=[$myObject,'onMsg'];工人::runAll();我们把MyClass的静态方法onMsg方法赋值给$worker->onMessage的回调,因为是静态方法,不能在onMsg$this中使用哈。我的知识分享https://nai8.me
