PHPでハマった話(オブジェクト編)

PHPでハマった話(オブジェクト編)

 PHPでコードを書いててハマるのはPerlを使ってるからとは限らない。

 フツーに

$foo = new Foo;
$foo->set_var( 1 );

$bar = $foo;
$bar->set_var( 2 );

echo $foo->get_var();
echo $bar->get_var();

――とかやった時に違う値が返って来たときには死ぬかと思った。

 まあ上記のようなケースは稀だと思うけれど、

function my_func( $foo ) {
  $foo->set_var( 3 );
}

$foo = new Foo;
my_func( $foo );
echo $foo->get_var();  // あれ、3出力されないぞ?

――とかは普通にやってて、しばらく悩んだ覚えがあります。

(あとはforeachでオブジェクトを操作した時とか)

 ……PHP5では修正されてるんだっけ?

 変更すると互換性で大変なことになりそうだけど。