samedi 1 mai 2010
Un petit conseil à la volée concernant la fonction clone() de PHP : si vous écrivez le code d'une classe dont vous souhaitez restreindre la possibilité de clone son objet pour avoir plus d'une instance, ça peut être une bonne idée de définir dans la classe la méthode magique __clone() et de lancer une exception si la fonction clone() est appelée.
En reprenant l'exemple de l'objet Singleton PHP :
classe Singleton{L'appel à clone sur l'objet provoquera une erreur à l'attention du programmeur :
// constructeur et méthodes
public function __clone(){
throw new Exception('Cet objet ne peut pas être cloné');
}
}
$singleton1 = Singleton::getInstance();Fatal error: Uncaught exception 'Exception' with message 'Cet objet ne peut pas être cloné' in fichier...
$singleton2 = clone($singleton1);