Ich habe eine Klasse und instanziiert mit ihm neueVerwendung von __clone in PHP?
$obja = new a;
Ich kenne den Unterschied zwischen den folgenden zwei Zeilen
$obja2 = $ojba;
$obja2 = clone $obja;
Aber auch wenn Sie erklären oder nicht __clone in der Klasse A den ersten erklären Zeile $ obja2 verweist auf $ obja Speicherplatz und zweite Zeile erstellt eine Kopie von $ obja. Bis hier ist es mir klar.
Warum hat PHP dann eine magische Methode __clone? Ist es nur für die Ausführung einer Reihe von Codes, die in __clone geschrieben wird, während wir $ obja2 = Klon $ obja verwenden;
Jemand bitte helfen, eine bessere Vorstellung davon zu bekommen.
Es existiert, um Ihnen zu erlauben, alle Objektinstanzen zu kopieren, die innerhalb des Objekts gehalten werden, wenn Sie müssen - standardmäßig würden die Zeiger kopiert werden, aber das neue Objekt würde effektiv dieselben Instanzen der untergeordneten Objekte haben. – DaveRandom
@DaveRandom: Kannst du etwas einfacher erklären :) kann ein Link sein oder irgendetwas, das dies besser erklärt. Ich habe bereits gegoogelt – zamil
Betrachte ein Objekt der Klasse 'A' mit einer Eigenschaft' $ innerB', die eine Instanz der Klasse 'B' enthält. Wenn Sie die Instanz von "A" klonen, wird das neue Objekt dieselbe Instanz von "B" haben. Wenn Sie clone verwenden, können Sie '$ this-> innerB = clone $ this-> innerB;' - verwenden, damit Sie auch für das neue Objekt eine neue Instanz von 'B' erhalten. Betrachten Sie [das] (http://codepad.viper-7.com/Ngssxa) gegen [das] (http://codepad.viper-7.com/51YWiC). – DaveRandom