使用 SwooleHttpd 解决 Swoole 环境下,旧代码的静态成员变量无法使用的问题

2019-03-22 12:11:49 +08:00
 dvaknheo

旧代码不考虑 swoole 环境。简化问题。 期望输出: 'static::$var is 1'; 但是以下测试代码会持续刷新数字 1,2,3,4。

<?php
namespace app\index\controller;

class Index
{
	static $var=0;
	public function index
    {
		static::$var++;
		$var=static::$var;
		return "static::\$var is {$var}";
		
    }
}

解决方案: 用 SwooleHttpd。

<?php
namespace app\index\controller;
use DNMVCS\SwooleHttpd;
require('SwooleHttpd.php'); // 这里懒得做 composer 引用,github 引用。反正暂时也没人关注

class Index
{
	static $var=0;
	public function index()
    {
		SwooleHttpd::ReplaceDefaultSingletonHandler(); // 接管默认单例。
		SwooleHttpd::EnableCurrentCoSingleton();  // 开启协程单例
		
		$_=&SwooleHttpd::CLASS_STATICS(static::class,'var');$_++;
		$var=SwooleHttpd::CLASS_STATICS(static::class,'var');
		return "static::\$var is {$var}";
    }
}

只要把 static::$var 替换成 SwooleHttpd::CLASS_STATICS(static::class,'var') 基本就行了。

SwooleHttpd 的更多功能,感兴趣的给个 star

https://github.com/dvaknheo/SwooleHttpd

本篇文章不足 10 个回复,就继续介绍 SwooleHttpd 的其他功能。

2514 次点击
所在节点    PHP
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/547354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX