昨日、私の友人と私は静的クラスとインスタンス化されたクラスを歩いていました。その後、突然奇妙な動作が発生しました。
<?php
class NumberContainerO {
public $_number;
public function __construct($number) {
$this->_number = $number;
}
}
$list = array();
$n = new NumberContainerO(1);
$list[] = &$n->_number;
$n = new NumberContainerO(2);
$list[] = &$n->_number;
$n = new NumberContainerO(3);
$list[] = &$n->_number;
var_dump($list);
?>
<?php
class NumberContainer {
public static $_number;
public static function __Add($number) {
self::$_number = $number;
}
}
$list = array();
NumberContainer::__Add(1);
$list[] = &NumberContainer::$_number;
NumberContainer::__Add(2);
$list[] = &NumberContainer::$_number;
NumberContainer::__Add(3);
$list[] = &NumberContainer::$_number;
var_dump($list);
?>
出力
配列(3) { [0]=> int(1) [1]=> int(2) [2]=> &int(3) } 配列(3) { [0]=> &int(3) [1] => &int(3) [2]=> &int(3) }
int(1) と int(2) が参照渡しされないのはなぜですか?
コードパッド: http://codepad.org/DsEZDFYf