Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Objektklonen, Schlüsselwort clone und __clone()-Methode
PHP-Objektklonen-Schlüsselwort clone und __clone()-Methode
clone-Schlüsselwort wird verwendet, um ein identisches Objekt zu klonen, und die __clone()-Methode wird verwendet, um die ursprünglichen Eigenschaften neu zu schreiben und Methoden.
Objektklonen
Manchmal müssen wir zwei oder mehr identische Objekte in einem Projekt verwenden. Wenn wir das Schlüsselwort new verwenden, um das Objekt neu zu erstellen, und dann dieselben Attribute zuweisen, ist dies der Fall umständlicher und fehleranfälliger. PHP bietet eine Funktion zum Klonen von Objekten, mit der ein identisches Objekt basierend auf einem Objekt vollständig geklont werden kann. Darüber hinaus stören sich die beiden Objekte nach dem Klonen nicht.
Verwenden Sie das Schlüsselwort Klonen, um ein Objekt zu klonen. Syntax:
$object2 = clone $object;
Beispiel:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name=$name; $this->age=$age; } function say() { echo "我的名字叫:".$this->name."<br />"; echo "我的年龄是:".$this->age; } } $p1 = new Person("张三", 20); $p2 = clone $p1; $p2->say(); ?>
Führen Sie das Beispiel aus, Ausgabe:
Mein Name ist: Zhang San
Mein Alter ist: 20
__clone()
Wenn Sie den Inhalt des Originalobjekts nach dem Klonen ändern möchten, müssen Sie ein spezielles __clone() hinzufügen die Klassenmethode, um die ursprünglichen Eigenschaften und Methoden zu überschreiben. Die Methode __clone() wird nur dann automatisch aufgerufen, wenn das Objekt geklont wird.
Beispiel:
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name; echo " 我的年龄是:".$this->age."<br />"; } function __clone() { $this->name = "我是假的".$this->name; $this->age = 30; } } $p1 = new Person("张三", 20); $p1->say(); $p2 = clone $p1; $p2->say(); ?>
Führen Sie das Beispiel aus, Ausgabe:
Mein Name ist: Zhang San. Mein Alter ist: 20
Mein Name lautet: Ich bin falscher Zhang San. Mein Alter ist: 30