有人可以告诉我为什么这是可能的吗?私人属性应该只能从类本身变化。 s :: $ c是可读的(getC()),但为什么我可以写入它?为什么你可以改变私有属性(它是对象)的值?
<?php
class s{
private $c;
public function __construct() {
$this->c = new t;
}
public function getC() {
return $this->c;
}
}
class t {
public $a = 1;
public $b = 2;
}
$x = new s();
$x->getC()->a = 5;
echo $x->getC()->a;
?>
输出:5
确定这是有道理的......但是,如果我返回一个数组,它总是一个副本,不是吗? –
是的,这是php的工作方式(不像java这样的语言,除了基本类型[int,char,byte等]以外的所有类型都通过引用传递),在php中只有对象通过引用传递。如果你想要一个数组通过引用来传递,那么在var的名字之前加上&function function changeArray(&$ array){...} –