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

Bagaimanakah Saya Mencipta Salinan Benar Objek dalam PHP?

DDD
DDDasal
2024-12-03 08:28:10678semak imbas

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'

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

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!

Kenyataan:
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