Penggunaan kata kunci klon dan kaedah __clone() dalam PHP (contoh terperinci)

WBOY
Lepaskan: 2023-04-10 18:24:02
asal
3171 orang telah melayarinya

Dalam artikel sebelumnya, saya membawakan anda "Definisi dan Penggunaan Ruang Nama dalam PHP (Contoh Terperinci)", yang memperkenalkan definisi dan penggunaan ruang nama dalam PHP secara terperinci Artikel ini terus dipaparkan anda pengetahuan yang berkaitan dalam PHP, tentang penggunaan kata kunci klon. Semoga ia membantu semua orang!

Penggunaan kata kunci klon dan kaedah __clone() dalam PHP (contoh terperinci)

Dalam kajian kami sebelum ini, terdapat banyak kata kunci, seperti $this, $new dan seterusnya Hari ini kita akan terus melihat kata kunci dalam PHP Count kata kunci yang lebih biasa digunakan clone kata kunci klon. Sebelum mempelajari kata kunci klon, kita perlu tahu bahawa model objek dalam PHP memanggil objek dengan rujukan, tetapi kita juga perlu membuat salinan objek Tujuannya adalah untuk mengelakkan kesan salinan objek apabila objek asal berubah.

Pada masa ini, jika anda menggunakan kata kunci baharu, anda boleh mencipta semula objek, dan kemudian memberikan nilai yang sama kepada atribut Ia juga boleh memainkan peranan untuk mencipta salinan baharu. tetapi kaedah ini bukan sahaja menyusahkan tetapi juga rawan ralat , pada masa ini kami berharap PHP boleh mempunyai objek yang sama, dan kedua-duanya tidak mengganggu antara satu sama lain, yang kami anggap sebagai klon. Bagaimanakah ini harus dicapai? Jangan panik, teruskan menonton.

<strong><span style="font-size: 20px;">clone</span></strong>Kata kunci

Kami berharap untuk mempunyai salinan yang tidak mengganggu objek asal dan menghantarnya dalam PHP Kata kunci klon boleh digunakan untuk mengklon objek. Format sintaks kata kunci

clone adalah seperti berikut:

克隆对象名称 = clone 原对象名称;
Salin selepas log masuk

Anda boleh memahami tindakan pengklonan sebagai menyalin kawasan memori objek, dan objek yang ditetapkan ialah sama seperti objek asal adalah bebas antara satu sama lain. Dan kaedah ahli, sifat dan nilai di antara mereka adalah sama.

Seterusnya, mari kita lihat keupayaan klon melalui contoh mudah adalah seperti berikut:

<?php
    class father{
        public $study1, $study2;
        public function __construct($study1, $study2){
            $this -> study1 = $study1;
            $this -> study2 = $study2;
        }
        public function output(){
            echo $this -> study1.&#39;,&#39;. $this -> study2.&#39;<br>&#39;;
        }
    }
    $obj  = new father(&#39;好好学习&#39;, &#39;天天向上&#39;);
    $obj2 = clone $obj;//克隆$obj
    $obj  -> output();
    $obj2 -> output();
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($obj);
    var_dump($obj2);
?>
Salin selepas log masuk

Hasil keluaran:

<. 🎜>

Penggunaan kata kunci klon dan kaedah __clone() dalam PHP (contoh terperinci)

Apa yang perlu kita ambil perhatian ialah jika anda menggunakan = untuk menetapkan objek kepada pembolehubah, maka apa yang anda perolehi akan menjadi rujukan kepada objek tersebut pembolehubah akan mempengaruhi objek asal. Jadi anda masih perlu menggunakan klon, menukar nilai atribut tidak akan menjejaskan objek asal.

Melalui contoh di atas, kita sudah tahu cara mengklonkan objek untuk kegunaan kita Namun, selepas objek berjaya diklon, sifat, kaedah ahli dan nilainya akan sama dengan objek asal. . Kemudian Pada masa ini, kita hanya mengatakan bahawa menukar atribut tidak akan menjejaskan objek asal, tetapi bagaimanakah kita harus menetapkan semula atribut ahli salinan yang diklon? Pada masa ini kita akan menggunakan kaedah

dalam kaedah sihir PHP. __clone()

<strong><span style="max-width:90%">__clone()</span></strong>__klon()kaedah

__clone()clone Kaedah __clone() dalam PHP tidak boleh dipanggil secara langsung Hanya
boleh mempunyai

Hanya apabila objek diklon melalui kata kunci klon, kaedah __clone() boleh dipanggil melalui objek yang diklon.

Pada masa ini, apabila menggunakan klon untuk membuat salinan, anda perlu memberi perhatian PHP akan menyemak sama ada __clone() wujud.

Jika ia tidak wujud, PHP akan menetapkan semua atribut objek secara lalai jika __clone() wujud, iaitu, ia telah ditakrifkan, maka ia juga akan bertanggungjawab untuk atribut objek baharu; .

<?php
    class father{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.&#39;,&#39;.$this -> url.&#39;<br>&#39;;
        }
        public function __clone(){//通过__clone()来更改新对象的属性
            $this -> name = &#39;福如东海&#39;;
            $this -> url  = &#39;寿比南山&#39;;
        }
    }
    $obj  = new father(&#39;好好学习&#39;, &#39;天天向上&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
?>
Salin selepas log masuk
Mari kita lihat contoh seperti berikut:


Hasil keluaran:

Penggunaan kata kunci klon dan kaedah __clone() dalam PHP (contoh terperinci)

private __clone() Oleh Daripada contoh di atas, dapat dilihat bahawa kaedah __clone() tidak memerlukan sebarang parameter. Perkara lain yang boleh kami ketahui ialah jika anda ingin melarang pengklonan, anda hanya perlu menetapkan kaedah

kosong dalam kelas dengan kebenaran akses

(peribadi Ini akan melumpuhkan tujuan pengklonan). Jika anda berminat, anda boleh klik pada "

Tutorial Video PHP" untuk mengetahui lebih lanjut tentang pengetahuan PHP.

Atas ialah kandungan terperinci Penggunaan kata kunci klon dan kaedah __clone() dalam PHP (contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!