Heim > Artikel > Backend-Entwicklung > Was ist die PHP-Klonmethode?
Die PHP-Klonmethode bezieht sich auf das Klonen von PHP-Objekten. Wenn wir die Ganzzahl $a einer Variablen $b zuweisen, ist $b eine „Kopie“ von $a, aber die beiden hängen nicht zusammen und der Wert von $b ändert sich . Es hat keine Auswirkungen auf $a, und Änderungen im Wert von $a haben keine Auswirkungen auf $b.
Empfohlen: „PHP-Video-Tutorial“
PHP-Objektklonen: __clone()-Methode
Objektklonen: __clone()-Methode
Wenn wir die Ganzzahl $a einer bestimmten After-Variablen zuweisen $b, $b ist eine „Kopie“ von $a, aber die beiden sind irrelevant. Änderungen im Wert von $b wirken sich nicht auf $a aus, und Änderungen im Wert von $a haben keine Auswirkungen auf $b. Das Gleiche gilt für Arrays, aber für Objekte ist es anders. Wenn die Objektinstanz $a einer Variablen $b zugewiesen wird, ist $b keine „Kopie“ von $a, sondern eine Referenz auf $a wirkt sich auf $a aus, und die Wertänderung von $a wirkt sich auch auf $b aus.
Zum Beispiel:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=$a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
Laufendes Ergebnis:
Cat-Klasse beginnt vor der Änderung:
a->Name: Silent
b- >Name: still
Nach Änderung:
a->Name: Linlin
b->Name: Linlin
Aber oft benötigen wir eine Kopie des Objekts, nicht nur für die Objektzitierung. Zu diesem Zeitpunkt können wir das Schlüsselwort clone verwenden. Beachten Sie jedoch, dass die Referenz beibehalten wird, wenn das Klassenattribut „geklont“ vorhanden ist. Das heißt, sowohl die Referenz in der Kopie als auch die Referenz in der Originalklasse Zeigen Sie auf denselben Speicher. .
Zum Beispiel:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=clone $a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
Operationsergebnisse:
Cat-Klassenstart vor der Änderung:
a->Name: stillschweigend
b->Name: stillschweigend
nach der Änderung:
a->Name: Linlin
b->Name: Silently
Cat-Klasse endet Cat-Klasse endet
Dem Attribut $name in dieser Klasse wird eine Referenz gegeben. Wenn also das Schlüsselwort clone zum Kopieren verwendet wird, wird der Name verwendet in der „Kopie“ ist dasselbe wie „Original“ $name zeigt auf dieselbe Variable
Das obige ist der detaillierte Inhalt vonWas ist die PHP-Klonmethode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!