[PHP-users 34094] Re: クラス オブジェクト の取扱いについて

WAKITA, Yoshi ysh @ wakita.no-ip.com
2008年 10月 22日 (水) 12:03:17 JST


小山さま、丁寧なレスをありがとうございます。
デストリが古いもので、PHP4 を使用しております。 そのことを前提としてお
読み下さい。

まず小山さまの解説により、「new <クラス>」で得られる値は、「ポインタ」で
も「参照」でもない。 C++ から少し離れて考えよ、とのこと、理解しました。
そこで、new でクラスのオブジェクト(インスタンス)を生成して得られる値を
「ポインタでも参照でもなく、インスタンス自体を『指し示す』何か」と考える
ようにしました。

ところが、ご提示頂きましたサイトを読んでますますわからなくなってしまいま
した。 当該サイトでは $a = new stdClass; でインスタンスを生成したのち、
$b = $a というコピーを行った場合、
 > PHP4では、新しいインスタンスが作成され、すべてのプロパティがコピーされ
 > ます
とあります。 とすれば、

 $a = new newClass();
 $a->foo ='aのfoo';
 $b = $a;	// ここで新しいインスタンス($b)が作成され、$a のすべて
		// がコピーされる
 $b->foo ='bのfoo';
 echo $a->foo;		// 「aのfoo」が出力されるはず
 echo $b->foo;		// 「bのfoo」が出力されるはず

と言うことでしょうか。 これから確かめてみますが、ちょっと考え難いな。

ともあれ、ありがとうございました。

-- 
WAKITA, Yoshi <ysh @ wakita.no-ip.com>



PHP-users メーリングリストの案内