为什么会出现以下情况
class AClass
{
public function __construct ()
{
$this->prop = "Hello";
}
public function &get ()
{
return $this->prop;
}
protected $prop;
}
function func (&$ref)
{
$ref = &$ref->get();
}
$value = new AClass();
func($value);
var_dump( $value );
outputs
object(AClass)#2 (1) {
["prop":protected]=>
string(5) "Hello"
}
不应该是$value
变量成为对的引用$prop
并且是类型string
而不是停留在类型上AClass
?
http://ideone.com/g1hTNV http://ideone.com/g1hTNV
考虑这段代码(它与您的代码相同,只是没有其他任何内容):
$value = new stdClass;
$ref = &$value;
$var = "Hello";
$ref = &$var; // this is where you write $ref = &$ref->get();
var_dump($value);
这给出了正如预期的那样一个空物体和not string(5) Hello
.
Why?
我们在4号线覆盖参考$value
并参考$var
.
$ref
现在引用了$var
;的价值$value
遗迹不受影响.
我们没有做什么
- 我们不分配值
$var
to $value
.
- 我们不分配给
$value
参考$var
.
结论
在 PHP 中不可能通过另一个引用变量来分配对变量的引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)