Dalam PHP, mekanisme pengendalian objek boleh kelihatan membingungkan, terutamanya apabila ia melibatkan penyalinan objek. Mari kita mendalami salah tanggapan umum untuk mendedahkan kebenaran.
Dalam PHP 5 dan ke atas, objek secara semula jadi diluluskan melalui rujukan. Ini bermakna bahawa sebarang perubahan yang dibuat pada objek dalam fungsi mempengaruhi objek asal di luar fungsi. Ini tidak seperti lulus mengikut nilai, di mana salinan objek dicipta.
Perbuatan semata-mata untuk menyerahkan objek kepada pembolehubah lain, seperti yang ditunjukkan oleh $c = $a, tidak mencipta salinan baharu objek. Kedua-dua pembolehubah, $a dan $c, merujuk objek asas yang sama.
Coretan kod yang disediakan menunjukkan kesan menghantar objek dengan rujukan:
<?php class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after' ?>
Seperti yang dijangka, kedua-dua $a dan $c cetak 'selepas', mendedahkan bahawa perubahan yang dibuat dalam set_b() dicerminkan dalam kedua-dua pembolehubah.
Kepada buat salinan tulen objek, PHP menyediakan pengendali 'klon'. Dengan menggunakan operator ini, anda boleh mencipta objek baharu yang bebas daripada objek asal:
$objectB = clone $objectA;
Dalam contoh ini, $objectB menjadi contoh berasingan daripada kelas yang sama dengan $objectA, tetapi dengan kelasnya sendiri keadaan bebas.
Dalam PHP, objek ialah diluluskan dengan rujukan, kecuali untuk semua yang lain. Pengendali 'klon' menawarkan cara untuk mencipta salinan sebenar objek apabila perlu. Memahami konsep ini adalah penting untuk mengelakkan tingkah laku objek yang tidak dijangka dan memastikan kod yang jelas dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimanakah PHP Mengendalikan Penghantaran dan Penyalinan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!