Klonen von Objekten in PHP
Nach einer sehr theoretischen Abschweifung gestern, heute mal wieder ein Anfänger Thema. Und zwar wollen wir einfach mal genau ansehen, was passiert, wenn man ein Objekt klont.Wir klonen Objekte immer dann, wenn wir eine sehr ähnliche Kopie brauchen. Natürlich kann es auch sein, dass es bei manchen Objekten die Initialisierung sehr kostspielig ist, sodass es günstiger ist einen Prototypen zu klonen. Warum auch immer wir einen Clone brauchen, die Technik, die dahinter steckt ist immer die gleiche. Wir haben ein Ursprungsobjekt, rufen darauf ein clone auf und erstellen somit ein neues Objekt.
<?php class A { public $isClone; public function __contruct( ) { $this->isClone = false; } public function __clone( ) { $this->isClone = true; } } $a1 = new A; $b2 = clone( $a1 ); ?>
Nachdem eine Kopie des Objektes $a erstellt wurde, wird die Methode __clone( ) automatisch auf Objekt $b aufgerufen. Dies würde in unserem Fall einfach das Attribut isClone auf true setzen. Der Konstruktor wird für $b nicht mehr aufgerufen, da man davon ausgeht, dass $a bereits ein voll instanziertes Objekt ist und somit der Konstruktor bereits aufgerufen wurde.
Was vielleicht noch wichtig ist: beim klonen werden alle primitiven Typen kopiert und alle Verweise auf Objekte bleiben Verweise.
Das war auch schon der kleine Ausflug ins Land des Klonenes, ich denke aber, dass ich in einen späteren Artikel noch einmal detaillierter auf das Thema eingehen werde.