Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Mencipta Salinan Benar Objek dalam PHP?

Bagaimanakah Saya Mencipta Salinan Benar Objek dalam PHP?

DDD
Lepaskan: 2024-12-03 08:28:10
asal
679 orang telah melayarinya

How Do I Create True Copies of Objects in PHP?

Mencipta Salinan Objek dalam PHP

PHP mengendalikan rujukan objek dengan cara yang unik. Bertentangan dengan kepercayaan popular, objek diluluskan dengan rujukan, membayangkan bahawa memberikan objek kepada pembolehubah lain tidak menghasilkan salinan. Tingkah laku ini menjadi jelas apabila mengubah suai objek asal selepas tugasan.

Contoh:

Pertimbangkan coretan PHP berikut:

class A {
    public $b;
}

function set_b($obj) { $obj->b = "after"; }

$a = new A();
$a->b = "before";
$c = $a;  // This line creates a reference to $a, not a copy

set_b($a);

print $a->b;  // Output: 'after'
print $c->b;  // Output: 'after'
Salin selepas log masuk

Dalam ini contoh, memberikan $a kepada $c mencipta rujukan kepada $a dan bukannya salinan. Apabila fungsi set_b() mengubah suai objek $a, perubahan dicerminkan dalam kedua-dua $a dan $c.

Penyelesaian: Menggunakan Klon

PHP 5 dan kemudian menyediakan pengendali klon untuk mencipta salinan sebenar objek. Dengan menggunakan klon, anda boleh menghantar objek mengikut nilai dan memastikan bahawa pengubahsuaian kepada objek asal tidak menjejaskan salinan.

$objectB = clone $objectA;  // Creates a copy of $objectA
Salin selepas log masuk

Nota Penting:

Ia patut disebut bahawa hanya objek yang diluluskan dengan rujukan dalam PHP. Jenis data primitif (seperti integer, rentetan dan nilai boolean) sentiasa dihantar mengikut nilai.

Atas ialah kandungan terperinci Bagaimanakah Saya Mencipta Salinan Benar Objek dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan