Может кто-нибудь сказать мне, почему это возможно? Частный атрибут должен быть изменен только для самого класса. 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
OK это имеет смысл ... Но если я верну массив, это всегда копия, не так ли? –
Да, так работает php (в отличие от языков, таких как java, например, где все типы, кроме базовых [int, char, byte и т. Д.] Передаются по ссылке), в php только объекты проходят по ссылке. если вы хотите передать массив по ссылке add & before имя var, то i.e 'function changeArray (& $ array) {...}' –