Alors voilà ... Je me demandais commment on pouvait faire en PHP pour interdire à l'utilisateur de créer lui-même une nouvelle instance de classe, mais par contre rendre cette création possible lors d'un appel à une méthode.
Un exemple concrêt permet de mieux cerner le problème : imaginons une classe qui modélise un noeud XML. Chaque instance de cette classe va posséder une référence vers un objet parent. Et l'objet parent va également posséder une référence vers l'objet fils.
L'idéal serait alors de faire :
$child = new Node();
$child -> setParent($parent);
$parent -> addChild($child);
Cette procédure est parfaite et ne pose aucun problème si l'utilisateur la respecte bien. Mais si un jour il utilise seulement $child = new Node() ... Bah ça ne correspond plus à rien.
Il faudrait plutôt utiliser une méthode de la classe Node qui permet d'automatiser la création de fils :
$child = $parent -> getEmptyChild();
Et empêcher la création d'un nouveau noeud autrement qu'à travers cette méthode ...
C'est la que ma visibilité intervient ...