347 of 410 menu

Methode __clone

Die Methode __clone wird automatisch bei Verwendung des clone-Operators aufgerufen. Sie ermöglicht die Definition einer eigenen Logik für das Kopieren des Objekts. Standardmäßig führt PHP eine flache Kopie aller Objekteigenschaften durch. Die Methode __clone ist nützlich, wenn eine tiefe Kopie implementiert oder das Verhalten beim Klonen geändert werden muss.

Syntax

public function __clone(): void

Beispiel

Grundlegende Implementierung der Objektklonierung:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'Objekt wurde geklont'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

Ausgabe:

'Objekt wurde geklont'

Beispiel

Tiefe Kopie eines Objekts mit verschachtelten Objekten implementieren:

<?php class Address { public $city; public function __construct($city) { $this->city = $city; } } class User { public $name; public $address; public function __construct($name, $city) { $this->name = $name; $this->address = new Address($city); } public function __clone() { $this->address = clone $this->address; } } $user1 = new User('John', 'New York'); $user2 = clone $user1; $user2->address->city = 'Boston'; echo $user1->address->city; ?>

Ausgabe:

'New York'

Beispiel

Hinzufügen einer eindeutigen ID beim Klonen:

<?php class Product { public $id; public $name; public function __construct($name) { $this->id = uniqid(); $this->name = $name; } public function __clone() { $this->id = uniqid(); } } $product1 = new Product('Laptop'); $product2 = clone $product1; echo $product1->id . ' ' . $product2->id; ?>

Beispielausgabe:

'5f1a2b3c 5f1a2b3d'

Siehe auch

  • die Methode __construct,
    die der Konstruktor des Objekts ist
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen