347 of 410 menu

Méthode __clone

La méthode __clone est appelée automatiquement lors de l'utilisation de l'opérateur clone. Elle permet de définir sa propre logique de copie d'objet. Par défaut, PHP effectue une copie superficielle de toutes les propriétés de l'objet. La méthode __clone est utile lorsqu'il est nécessaire de mettre en œuvre une copie profonde ou de modifier le comportement lors du clonage.

Syntaxe

public function __clone(): void

Exemple

Implémentons un clonage basique d'objet :

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

Résultat de l'exécution du code :

'Objet cloné'

Exemple

Implémentons une copie profonde d'objet avec des objets imbriqués :

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

Résultat de l'exécution du code :

'New York'

Exemple

Ajoutons un identifiant unique lors du clonage :

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

Résultat de l'exécution du code (exemple) :

'5f1a2b3c 5f1a2b3d'

Voir aussi

  • la méthode __construct,
    qui est le constructeur d'objet
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser