JavaとPHP4の参照についての致命的な相違
- 2004年 11月30日
- 投稿者 : ino
参照は完全なエイリアスになる.
例)
class foo{
function assign(&$tmpl){
$this->tmpl = &$tmpl;
$this->request();
$tmpl->assign($this->getModeVariableName(),$this->getCode());
$this->tmpl = null; // $this->tmpl の参照をなくしたい.
}
}
$template = new Template();
$assginer = new foo();
$assigner->assign($template);
// この時点で $template === null になる.
対策は, ローカル変数にリエイリアシングしてしまうこと.
つまり, $this->tmpl = null ではなく
$stuff = null;
$this->tmpl =& $stuff;
とすればいい.
