【发布时间】:2014-04-08 13:56:43
【问题描述】:
这是可能揭示 PHP 错误的简化代码版本
class AClass
{
public static $prop = "Hi";
}
function assignRef (&$ref)
{
$ref = &AClass::$prop;
echo "inside assignRef: $ref\n";
}
$ref = "Hello";
assignRef($ref);
echo "outside: $ref\n";
打印出来
inside assignRef: Hi
outside: Hello
不应该通过引用AClass 类的$prop 静态变量来分配$ref,并且不仅在assignRef 函数内部而且在它外部都变为“Hi”?
【问题讨论】:
-
$ref = "Hello"如果我没记错的话,会用字符串“Hello”覆盖变量 -
参数声明中的&不是你想要的吗?为什么还有 & in "$ref = &AClass::$prop;"
-
@DavidWilkins
$ref在$ref = "Hello"发生时未分配 -
您的问题是
$ref = &AClass::$prop;中的虚假&将其更改为$ref = AClass::$prop;它将按您的预期工作 -
@DesmondHume 为什么我的回答难以接受?就是这样。有些限制只是设计使然。甚至有 C 语言不允许的东西(比如stackoverflow.com/questions/19681025)。