Home > PHP > newと参照と私 (2)

newと参照と私 (2)

  • 2007-07-11 (水) 1:33
  • PHP

たまにチェックしていきたいと思いますが、PHPフレームワークのトレンド。私がCakePHPを使うモチベーション。Symfonyが追い上げとる。

newと参照と私の内容ですが、いったい何故私がはまらねばならなかったのか、わかりにくいので追記。



class RefObj {
    var $val;
    
    function RefObj($val) {
        $this->val = $val;
    }
    
    function out() {
        echo $this->val . "\n";
    }
}

class Hoge {
    var $foo;
    
    function Hoge() {
        $this->foo = array();
    }
    
    function add(&$data) {
        $this->foo[] =& $data;
    }
    
    function outAll() {
        foreach ($this->foo as $data) {
            $data->out();
        }
    }
}


$hoge = new Hoge();
for ($i = 0; $i < 3; $i++) {
    $data = new RefObj($i);   // (1)
    $hoge->add($data);
}

$hoge->outAll();

上記の結果は


2
2
2

(1)での代入で$dataの入れ物は変わらず、Hoge::add()は参照を受け取るので、Hoge::$fooの要素は全て同じ入れ物を指すということになり、結果、全部2になるわけです。(newと参照と私を参照のこと。駄洒落ではない。)
(1)で$data =& new RefObj($i)とすれば、結果は


0
1
2

となります。

以上

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=51
Listed below are links to weblogs that reference
newと参照と私 (2) from コスミー報告書[社外秘]

Home > PHP > newと参照と私 (2)

Search
Feeds
Meta
 合計:018989
 今日:0128 昨日:0157

Return to page top