【发布时间】:2016-08-30 10:49:23
【问题描述】:
这两种通过引用获取值的方式有什么实际区别吗?
方式 1
<?php
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue();
// $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;
// prints the new value of $obj->value, i.e. 2.
?>
方式 2
<?php
class foo {
public $value = 42;
public function getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->value;
$obj->value = 2;
echo $myValue;
?>
在这两种情况下都会打印 2。那么为什么需要 getValue() 函数呢?第一个例子取自PHP Manual。
【问题讨论】:
-
PHP 中的 3 条引用规则是: 规则 #1) 不要使用引用。规则#2) 不要使用引用。规则 #3) 不要使用引用。
-
@Sherif 最好不要使用对象 ;-)
-
@jeroen 不知道你为什么会这么说。对象不是引用。
-
使您的 $value 财产受到保护而不是公开。目前,您始终可以直接设置它。即这个例子没有展示任何有用的东西?
标签: php syntax return-by-reference