Etendre une classe pour en faire un singleton - PHP - Programmation
Marsh Posté le 27-11-2008 à 08:24:10
"must be public"
Donc la question est :
pourquoi ne peut on pas étendre une classe en mettant son constructeur en privé alors que dans la classe mère il est en public ?
C'est comme ça dans les autres languages ?
Marsh Posté le 27-11-2008 à 12:17:22
L'héritage n'est typiquement pas la bonne solution pour ton problème, là...utilise la composition.
Marsh Posté le 27-11-2008 à 17:41:02
ReplyMarsh Posté le 27-11-2008 à 17:55:53
il s'en branle, la classe mère a un constructeur public.
Marsh Posté le 27-11-2008 à 18:03:25
ok mais j'ai pas compris ce qu'il veut
Forcer l'utilisation de getInstance ?
Code :
|
Marsh Posté le 27-11-2008 à 18:52:05
Il veut faire un singleton qui hériterait des fonctionnalités de sa classe "mère", laquelle a un constructeur public.
La solution est la composition, ie un singleton qui contient une instance de la classe "mère", et tu forwardes toutes les fonctionnalités dont tu as besoin...
Marsh Posté le 27-11-2008 à 18:53:29
ok...
Marsh Posté le 27-11-2008 à 22:59:26
ouais y a juste un ptit soucis dans la compo, c'est que je dois déclarer toutes les méthodes de l'autre classe dedans.
Marsh Posté le 28-11-2008 à 07:19:21
ah ben ça...
Sinon tu profites des raccourcis crados de php et tu fais ça via __call
Marsh Posté le 28-11-2008 à 10:00:47
ReplyMarsh Posté le 28-11-2008 à 17:54:13
skeye a écrit : |
Marsh Posté le 28-11-2008 à 18:24:18
bah oui c'est crado...
Marsh Posté le 26-11-2008 à 16:49:30
Salut,
j'ai une classe qui fait des trucs et sa petite soeur qui est spécialisée et qui doit être un singleton.
Pour le singleton je ne sais pas assurer que personne ne va pas faire un new à la place du getInstance donc j'ai voulu mettre mon construct en private.
Et la, c'est le drame
Fatal error: Access level to Fred::__construct() must be public (as in class Human)
Pourquoi on ne peut pas faire cela ?
Et je ne peux pas mettre mon constructeur de ma classe mère en private.