347 of 410 menu

Metoden __clone

Metoden __clone kaldes automatisk ved brug af operatoren clone. Den giver mulighed for at definere egen logik for kopiering af objektet. Som standard udfører PHP en overfladisk kopiering af alle objektets egenskaber. Metoden __clone er nyttig, når der er behov for at implementere dyb kopiering eller ændre adfærden ved kloning.

Syntaks

public function __clone(): void

Eksempel

Lad os implementere basis kloning af et objekt:

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

Resultat af kodekørsel:

'Objekt klonet'

Eksempel

Lad os implementere dyb kopiering af et objekt med indlejrede objekter:

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

Resultat af kodekørsel:

'New York'

Eksempel

Lad os tilføje en unik identifikator ved kloning:

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

Resultat af kodekørsel (eksempel):

'5f1a2b3c 5f1a2b3d'

Se også

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis