<?phpclassObjectTracker{privatestatic$nextSerial=0;private$id;private$nomObjet;function__construct($nomObjet){$this->nomObjet=$nomObjet;$this->id=++self::$nextSerial;}function__clone(){$this->nomObjet="Clone de ".$this->nomObjet;$this->id=++self::$nextSerial;}functionlireID(){return($this->id);}functionlireNom(){return($this->nomObjet);}}$ot=newObjectTracker("Objet de Zeev");$ot2=clone$ot;print($ot->lireID()." ".$ot->lireNom()."`<br>`\n");print($ot2->lireID()." ".$ot2->lireNom()."`<br>`\n");print($ot->lireID()." ".$ot->lireNom()."`<br>`\n");?>
Affiche :
1 Objet de Zeev
2 Clone de Objet de Zeev
1 Objet de Zeev
Attention au clonage
Le clonage est une méthode à prendre avec de grosses pincettes. Notamment parce que PHP va toujours faire un clonage de tous les attributs de l’objet avant d’appeler notre méthode de clonage clone(). Ainsi, à l’appel dans la méthode clone(), les attributs de l’objet sont déjà valués à partir de l’objet source du clonnage :
dans le code ci-dessous :