Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/05/2011, 12h28   #1
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Par défaut Créer une méthode abstract static.

Bonjour,

Je viens de tomber sur un petit problème. J'ai une classe AbstractService qui me défini un certain nombre de méthodes (du genre "findAll"), et des services (ex : UtilisateurService) qui étendent cette classe.

Je voudrai forcer le fait que quand on étendent AbstractService, on implémente le pattern singleton. Pour ca, j'aimerai définir dans ma classe AbstractService un truc du genre :
Code :
abstract static function getInstance();
Mais visiblement, ce n'est pas possible. Est-ce que quelqu'un pourrait m'expliquer pourquoi ? (et question bonus, comment faire pour que j'obtienne l'effet voulu).
En enlevant le Abstract, ca fonctionne, mais du coup, les classes filles ne sont plus obligées de redéfinir la méthode. Ca marche, mais c'est moins propre.

Merci d'avance ;-)
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 14h44   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
un méthode abstact c'est pour pour partager la méthode au niveau de l’héritage, si ta méthode est vide ca n'a pas trop de sens c'est plus du ressort de l'interface,
Ensuite pour c'est pas possible de faire ca ?
parce que c'est pas logique, une méthode statique appartient à la classe où elle est définis
Donc sois utilise interface, sois si vraiment c'est partagé (mais la visiblement c'est pas le cas) enlève le abstract et utilise static:: ou get_called_class pour avoir la classe enfant
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/05/2011, 15h32   #3
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Hummm, oui je vois.
Effectivement, je me suis fait une interface OSingleton qui défini "getInstance". Ma classe abstraite implements OSingleton et du coup, toutes les filles doivent le redéfinir.

La fonction get_called_class est également assez interessante, je ne la connaissait pas, mais je m'en souviendrai.

Merci beaucoup ;-)
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h35.


 
 
 
 
Partenaires

Hébergement Web