Tampaknya objek PHP dilewatkan oleh referensi. Bahkan operator penugasan tampaknya tidak membuat salinan Obyek.
Berikut ini adalah bukti sederhana yang dibuat-buat:
<?php
class A {
public $b;
}
function set_b($obj) { $obj->b = "after"; }
$a = new A();
$a->b = "before";
$c = $a; //i would especially expect this to create a copy.
set_b($a);
print $a->b; //i would expect this to show 'before'
print $c->b; //i would ESPECIALLY expect this to show 'before'
?>
Dalam kedua kasus cetak saya mendapatkan 'setelah'
Jadi, bagaimana saya meneruskan $ a ke set_b () berdasarkan nilai, bukan dengan referensi?
(object) ((array) $objectA)
mungkin menghasilkan hasil yang Anda inginkan sama dengan kinerja yang lebih baik daripada menggunakan clone $objectA
atau new stdClass
.