旧代码不考虑 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 的其他功能。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.