__clone(), wird aufgerufen, wenn die Objektkopie abgeschlossen ist
In den meisten Fällen müssen wir ein Objekt nicht vollständig kopieren, um seine Eigenschaften zu erhalten. Aber es gibt einen Fall, in dem es wirklich benötigt wird: wenn Sie ein GTK-Fensterobjekt haben, das fensterbezogene Ressourcen enthält. Möglicherweise möchten Sie ein neues Fenster kopieren und alle Eigenschaften des ursprünglichen Fensters beibehalten, es muss jedoch ein neues Objekt sein (denn wenn es sich nicht um ein neues Objekt handelt, wirken sich Änderungen in einem Fenster auf das andere Fenster aus).
Es gibt eine andere Situation: Wenn Objekt A einen Verweis auf Objekt B speichert, Sie Objekt A kopieren und möchten, dass das darin verwendete Objekt nicht mehr Objekt B, sondern eine Kopie von B ist, müssen Sie dies tun Holen Sie sich eine Kopie von Objekt A.
Funktion:
Das Kopieren von Objekten kann über das Schlüsselwort clone erfolgen (dadurch wird nach Möglichkeit die Methode __clone() des Objekts aufgerufen). Die Methode __clone() in einem Objekt kann nicht direkt aufgerufen werden.
Syntax:
$copy_of_object = clone $object;
Hinweis:
Wenn das Objekt kopiert wird, wird PHP 5 auf allen Eigenschaften des Objekts ausgeführt Objekt Eine flache Kopie. Alle Referenzeigenschaften sind weiterhin Verweise auf die ursprünglichen Variablen.
Wenn der Kopiervorgang abgeschlossen ist und die Methode __clone() definiert ist, wird die Methode __clone() im neu erstellten Objekt (dem durch das Kopieren generierten Objekt) aufgerufen und kann zum Ändern des Werts von verwendet werden Attribut (falls erforderlich).
Sehen Sie sich den Code an:
<?php class Person { public $sex; public $name; public $age; public function __construct($name="", $age=25, $sex='男') { $this->name = $name; $this->age = $age; $this->sex = $sex; } public function __clone() { echo __METHOD__."你正在克隆对象<br>"; } } $person = new Person('小明'); // 初始赋值 $person2 = clone $person; var_dump('persion1:'); var_dump($person); echo '<br>'; var_dump('persion2:'); var_dump($person2);
Sehen Sie sich das Ergebnis an:
Person::__clone你正在克隆对象 string(9) "persion1:" object(Person)#1 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) } string(9) "persion2:" object(Person)#2 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) }
Klonen erfolgreich.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der __clone()-Methode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!