Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Objektklonen, Schlüsselwort clone und __clone()-Methode

PHP-Objektklonen, Schlüsselwort clone und __clone()-Methode

巴扎黑
巴扎黑Original
2016-11-11 17:56:271176Durchsuche


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


Stellungnahme:
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