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.
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 原对象名称;
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.','.$this -> url.'<br>'; } } $obj = new Website('PHP中文网', 'https://www.php.cn/'); $obj2 = clone $obj; $obj -> output(); $obj2 -> output(); echo '<pre class="brush:php;toolbar:false">'; var_dump($obj); var_dump($obj2); ?>
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/" }
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.','.$this -> url.'<br>'; } public function __clone(){ $this -> name = 'PHP教程'; $this -> url = 'https://www.php.cn/'; } } $obj = new Website('PHP中文网', 'https://www.php.cn/'); $obj2 = clone $obj; $obj -> output(); $obj2 -> output(); ?>
Die laufenden Ergebnisse sind wie folgt:
PHP中文网,https://www.php.cn/ PHP教程,https://www.php.cn/
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!