So verwenden Sie das PHP-Clone-Schlüsselwort

青灯夜游
Freigeben: 2023-03-11 19:28:02
Original
1974 Leute haben es durchsucht

In PHP kann das Schlüsselwort clone zum Klonen von Objekten verwendet werden. Das Syntaxformat lautet „Objektname klonen = Originalobjektname klonen;“; nachdem die Objekte erfolgreich geklont wurden, sind ihre Mitgliedsmethoden, Attribute und Werte genau das gleiche. Wenn Sie die Mitgliedsattribute der geklonten Kopie neu zuweisen möchten, können Sie die Methode „__clone()“ verwenden.

So verwenden Sie das PHP-Clone-Schlüsselwort

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

PHP-Klonschlüsselwort (Klonobjekt)

Das Objektmodell in PHP ruft Objekte per Referenz auf. Manchmal ist es jedoch erforderlich, eine Kopie eines Objekts zu erstellen, und Sie möchten die Objektkopie nicht beeinträchtigen, wenn Sie das Originalobjekt ändern. Wenn Sie das Schlüsselwort new verwenden, um das Objekt neu zu erstellen und dann den Eigenschaften denselben Wert zuzuweisen, ist dies umständlich und fehleranfällig. In PHP können Sie ein identisches Objekt basierend auf einem vorhandenen Objekt klonen. Nach dem Klonen sind das Originalobjekt und das Kopierobjekt völlig unabhängig und beeinträchtigen sich nicht.

In PHP können Sie das Schlüsselwort clone verwenden, um ein Objekt zu klonen. Das Syntaxformat lautet wie folgt:

克隆对象名称 = clone 原对象名称;
Nach dem Login kopieren

Da die Klonmethode tatsächlich den gesamten Speicherbereich des Objekts kopiert und die neue Objektvariable verwendet, um auf den neuen Speicher zu verweisen, also nach der Zuweisung Das Objekt und das Originalobjekt sind unabhängig voneinander.

Nachdem die Objekte erfolgreich geklont wurden, sind ihre Mitgliedsmethoden, Eigenschaften und Werte genau gleich. Wenn Sie die Mitgliedsattribute der geklonten Kopie neu zuweisen möchten, können Sie die Methode __clone() verwenden.

【Beispiel】 Im Folgenden wird anhand eines einfachen Beispiels die Verwendung des Schlüsselworts „Klonen“ demonstriert.

<?php
    class Website{
        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;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($obj);
    var_dump($obj2);
?>
Nach dem Login kopieren

Die laufenden Ergebnisse lauten wie folgt:

PHP中文网,https://www.php.cn/
PHP中文网,https://www.php.cn/
object(Website)#1 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}
object(Website)#2 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}
Nach dem Login kopieren

Hinweis: Wenn Sie = verwenden, um einer Variablen ein Objekt zuzuweisen, erhalten Sie einen Verweis auf das Objekt. Der Wert des Attributs wird über diese Variable geändert Auswirkungen auf das Originalobjekt haben.

__clone() magische Methode

__clone() Methode kann nicht direkt aufgerufen werden. Nur wenn ein Objekt über das Schlüsselwort clone geklont wird, kann das Objekt zum Aufrufen der __clone() Methode verwendet werden. Beim Erstellen einer Kopie eines Objekts prüft PHP, ob die Methode __clone() existiert. Wenn es nicht existiert, ruft es die Standardmethode __clone() auf und kopiert alle Eigenschaften des Objekts. Wenn die Methode __clone() definiert wurde, ist die Methode __clone() für das Festlegen der Eigenschaften des neuen Objekts verantwortlich. In der Methode __clone() müssen Sie also nur die Eigenschaften überschreiben, die geändert werden müssen. Die Methode

__clone() benötigt keine Parameter. Hier ist ein Beispiel zur Veranschaulichung:

<?php
    class Website{
        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(){
            $this -> name = &#39;PHP教程&#39;;
            $this -> url  = &#39;https://www.php.cn/&#39;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
?>
Nach dem Login kopieren

Die laufenden Ergebnisse sind wie folgt:

PHP中文网,https://www.php.cn/
PHP教程,https://www.php.cn/
Nach dem Login kopieren

Tipps: Wenn in der Klasse ein leerer Wert festgelegt ist, wird die Zugriffsberechtigung angezeigt ist privat (private) Die Methode __clone() kann das Klonen deaktivieren.

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das PHP-Clone-Schlüsselwort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage