1

編集:オブジェクトにビジネスロジックを適用し、他のプロセスで横に移動するためにそのクローンが必要な場合はどうなりますか。異なる結果になる可能性が非常に高いビジネス ロジックをオブジェクトの新しいインスタンスに再適用するか、既存のインスタンスを複製する方が効率的ですか? しかし、$a = $b を実行すると、オブジェクトが参照渡しされるだけでは十分ではありません。

この例を見てみましょう:

$a = new test();
$b = $a;
$b->setSomeProp('test');
$a->setSomeProp('failed');
echo $b->getSomeProp(); //returns 'failed'

$a = new test();
$b = unserialize(serialize($a));
$b->setSomeProp('test');
$a->setSomeProp('failed');
echo $b->getSomeProp(); //returns 'test'

参照を置き換えるより良い方法はありますか?

4

3 に答える 3

0

参照: PHP グローバルまたは $GLOBALS

@Artefacto から: 「関数内で、グローバル変数の設定を解除する場合は、グローバル $varname; unset($varname); ではなく、unset($GLOBALS['varname']) を使用する必要があります。」

于 2012-12-14T18:06:56.823 に答える
0

コードが変更されていることがわかります。あなたが探しているのは ですclone。これを試して:

$b = clone $a;
于 2012-10-19T08:50:32.517 に答える
0

はい。参照の設定を解除する必要があります

使うだけunset($b)

于 2012-10-18T17:13:29.407 に答える