作者gpmm (银色)
看板PHP
标题[问题] 关於 class / function 之间的传址
时间Thu Nov 1 18:23:40 2007
因为请问的有点难以解释,所以用 sample 来说明问题:
class ROC {
var $list = array ();
function set (& $n) {
array_push ($this->list, &$n);
}
function che ($v) {
$o = & new Va ();
$o->v = $v;
return $o;
}
}
class Va {
var $v;
}
$roc = new ROC ();
$s = $roc->che (99);
$roc->set ($s);
此时 $roc->list[0]->v = 99;
但如果再次进行以下
$s = $roc->che (98);
$roc->set ($s);
此时
$roc->list[0]->v = 98;
$roc->list[1]->v = 98;
但小弟希望的是
$roc->list[0]->v = 99;
$roc->list[1]->v = 98;
换句话说,希望能让 $v = new Va () 这个动作,
是完全将 $v 的位址和内容一起更新,请问有实做的方法吗?
(而且如果只能藉由更动 class 内的结构来达成的话…)
另外,如果是将 che 这个 function 拉到外面来使用(就是非在 class 中),
此时以 & new Va () 是可以完全产生新的 object 的,
所以小弟猜测是在传的过程中有部份不是传址,
不知有没大大能解惑的? orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.130.248
※ 编辑: gpmm 来自: 61.57.130.248 (11/01 18:25)