参照なしでオブジェクトをコピーするにはどうすればよいですか?
<p>PHP5 OOP オブジェクトがデフォルトで参照によって渡されることは十分に文書化されています。これがデフォルトであれば、デフォルト以外でも参照せずにコピーする方法があるような気がしますが、どうでしょうか? ? </p>
<pre class="brush:php;toolbar:false;">関数 refObj($object){
foreach($object as &$o){
$o = 'これは ' に変更されます。 $o;
}
$object を返します。
}
$obj = 新しい StdClass;
$obj->x = 'x';
$obj->y = 'y';
$x = $obj;
プリント_r($x)
// オブジェクト(stdClass)#1 (3) {
// ["x"]=>string(1) "x"
// ["y"]=>string(1) "y"
// }
// $obj = refObj($obj); // これを行う必要はありません。
refObj($obj); // $obj は参照によって渡されます
プリント_r($x)
// オブジェクト(stdClass)#1 (3) {
// ["x"]=> string(1) "これは x に変わります"
// ["y"]=> string(1) "これは y に変わります"
// }
<p>この時点では、<code>$x</code> が元の <code>$obj</code> であると予想していましたが、もちろんそうではありません。これを行う簡単な方法はありますか、それとも次のようなコードを書かなければなりませんか</p>