旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

PHP4の値渡しと参照渡しについて今一度

2007年8月10日

既に関東破滅地帯並みに荒んでいるPHP4についてですけど
変数代入時の値渡しと参照渡し(リファレンス)について、ちょっと疑問が沸いたので調べました。
としたら、とても良い参考サイトがあったので
基本的にはそのページを見てもらいつつ、自分用に下に必要なとこだけをメモります。
php_symbol_table
php_symbol_table posted by (C)kjirou
↑画像を クリック→フォト蔵に移動→再度クリック すると大きく見れます。
  • 1をもし

    $a = 1;
    $b = 1;
    $c = 1;
    

    と書くと、[シンボル]-[変数名] のセットが3つ出来る(多分ですが)。
    つまり、その分メモリの無駄使いになる(はず)。

  • 2は
    $a = &$b;

    と書いても全く同じ意味になります。

  • 2の後に
    unset($a);

    をしても、シンボルまでは消えません。
    つまり[シンボル]-[$b]のセットは残ります。

  • 3は、上記参考サイトには書いてありませんが、多分こうなるんじゃないかなぁという予測です。
後は

$obj = new Foo;
$obj =& new Foo;

基本的には↓を使うべしというのが、大事だとおもつた
(↑だと、new Foo; で1つ、$obj = で1つ、計2つのシンボルが作られるとのこと)

突っ込みとか批判とか大歓迎です。
よろしくお願いしまーす。