Heim >Backend-Entwicklung >PHP-Problem >Was ist die PHP-Klonmethode?

Was ist die PHP-Klonmethode?

藏色散人
藏色散人Original
2020-10-14 16:40:313716Durchsuche

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.

Was ist die PHP-Klonmethode?

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 &#39;Cat类启动&#39;;
$this->name = $name;
}
function __destruct(){
echo &#39;Cat类结束&#39;;
}
}
$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 &#39;Cat类启动&#39;;
$this->name = $name;
}
function __destruct(){
echo &#39;Cat类结束&#39;;
}
}
$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!

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