首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
在server的open回调函数里,如何修改外部的变量
我需要将连接带server的client按类型存储到不同的数组里,在外部声明了一个数组,但是在回调函数里只能使用这个数组,下次再调用这个回调函数的时候,数组又为空了 ```php <?php class Server{ private $serv; public $clientArr= array(); public $clientSum = 0; public function __construct(){ $this->serv = new swoole_websocket_server('192.168.1.192', 8180); $this->serv->on('open', function(swoole_websocket_server $serv, $request) use($clientSum, $clientArr){ $clientSum++; echo $clientSum."\n"; $clientArr[count($clientArr)] = $request->fd; foreach($serv->connections as $fd){ echo "$fd-"; } echo "\n"; for($i=0; $i<count($clientArr); $i++){ echo $clientArr[$i].'-'; } echo "\n"; }); $this->serv->on('message', function(swoole_websocket_server $serv, $frame){ echo "Get a msg is: $frame->data\n"; }); $this->serv->on('close', function($ser, $fd){ echo "$fd is close\n"; }); $this->serv->start(); } } $server = new Server(); ```
发布于9年前 · 1 次浏览 · 来自
提问
E
Eamon
我需要将连接带server的client按类型存储到不同的数组里,在外部声明了一个数组,但是在回调函数里只能使用这个数组,下次再调用这个回调函数的时候,数组又为空了 ```php <?php class Server{ private $serv; public $clientArr= array(); public $clientSum = 0; public function __construct(){ $this->serv = new swoole_websocket_server('192.168.1.192', 8180); $this->serv->on('open', function(swoole_websocket_server $serv, $request) use($clientSum, $clientArr){ $clientSum++; echo $clientSum."\n"; $clientArr[count($clientArr)] = $request->fd; foreach($serv->connections as $fd){ echo "$fd-"; } echo "\n"; for($i=0; $i<count($clientArr); $i++){ echo $clientArr[$i].'-'; } echo "\n"; }); $this->serv->on('message', function(swoole_websocket_server $serv, $frame){ echo "Get a msg is: $frame->data\n"; }); $this->serv->on('close', function($ser, $fd){ echo "$fd is close\n"; }); $this->serv->start(); } } $server = new Server(); ```
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2017-04-04
D
David
变量作用域完全是PHP的语法。回调函数可以使用use将对象引入。
赞
0
回复