我有静态变量的研究函数,让我们看下一个代码:
(警告!对于测试,您必须在php.ini中启用xdebug)
function a()
{
static $var = 10;
xdebug_debug_zval('var');
return $var;
}
a();
输出下一个:var:(refcount=2, is_ref=1),int 10
发生了什么事?为什么refcount=2
?第二次参考?
P.S所以,如果我们有var:(refcount=2, is_ref=1),int 10
。这就是为什么我们不能在静态变量中保存引用。
对于用户Mark Baker
function a()
{
$var = 10;
xdebug_debug_zval('var');
return $var;
}
a();
输出:var:(refcount=1, is_ref=0),int 10
信息:调用函数不使用输出信息没有问题的变量参数。因此,鉴于变量名称所使用的参数写入字符串
答案 0 :(得分:1)
在PHP中访问静态变量会在使用时创建对内部静态数组的引用。
您可以通过注意到无法在静态变量中存储引用来验证这一点:
function a() {
static $var = 1;
var_dump($var);
$var = &$ref;
$var = 2;
}
a(); a();
// prints int(1) int(1)