347 of 410 menu

Methode __clone

De methode __clone wordt automatisch aangeroepen bij gebruik van de clone operator. Hiermee kan men eigen kopieerlogica voor een object definiëren. Standaard voert PHP een ondiepe kopie (shallow copy) uit van alle eigenschappen van het object. De methode __clone is nuttig wanneer men een diepe kopie (deep copy) moet implementeren of het gedrag bij het klonen wil aanpassen.

Syntaxis

public function __clone(): void

Voorbeeld

Laten we basiskloning van een object implementeren:

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

Resultaat van de code-uitvoering:

'Object gekloond'

Voorbeeld

Laten we diepe kopiëring van een object met geneste objecten implementeren:

<?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; ?>

Resultaat van de code-uitvoering:

'New York'

Voorbeeld

Laten we een unieke identifier toevoegen bij het 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; ?>

Resultaat van de code-uitvoering (voorbeeld):

'5f1a2b3c 5f1a2b3d'

Zie ook

  • de methode __construct,
    die de constructor van het object is
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren