誰かがなぜこれが可能か教えていただけますか?プライベート属性は、クラス自体からのみ変更可能である必要があります。 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 etc ...]は参照渡しされます)。配列を参照渡しで渡したい場合は、varの名前の前に&を追加します(例: 'function changeArray(&$ array){...}')。 –