旧代码不考虑 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 的其他功能。