(error:Cannot call abstract met)erreur de conception ou bug?

Petit nouveau ! | 2 Messages

26 mai 2010, 17:45

Je suis l'auteur original du post sur dvp, je rejoins ici la discussion.

Bon mon post a failli croiser les derniers, il semble donc que ce soit bien prévu dans php 5.3, ça me parait bizarre de ne pas avoir donné directement ce comportement à self et d'avoir créé static:: plutôt car le comportement n'est pas cohérent avec celui de this. Mais bon...
En gros, je vais patienter avec mes méthodes non static qui devraient l'être, jusqu'à ce qu'online.net décide de mettre à jour sa version de php, ou qu'on change d'hébergeur...

Merci beaucoup à tous de votre aide

ViPHP
ViPHP | 5462 Messages

26 mai 2010, 17:51

je comprend.

tu peux créer la fonction get_called_class() si tu veux (mais bon c'est la bidouille)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 mai 2010, 17:53

Mais pourquoi veux-tu faire cela ?
(j'ai cru comprendre que dans les autres langages, ce n'était pas non plus possible.)
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

ViPHP
ViPHP | 5462 Messages

26 mai 2010, 17:56

Mais pourquoi veux-tu faire cela ?
(j'ai cru comprendre que dans les autres langages, ce n'était pas non plus possible.)
pour ma part j'avais fais ca dans l'optique d'un MVC par exemple pour récupérer toutes les valeurs

User::getAll();
Info::getAll();

au lieux de faire

$user = new User();
$user->getAll();

$info = new Info();
$info->getAll();

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 mai 2010, 17:59

Là, je peux comprendre le static mais pkoi l'abstract ?
(oui je pose des questions mais j'aimerais vraiment comprendre).

Sinon, j'ai trouvé des explications sur : http://stackoverflow.com/questions/9990 ... ss-methods
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Petit nouveau ! | 2 Messages

26 mai 2010, 18:04

J'ai une classe abstraite qui contient des méthodes (implémentées) qui reposent sur des méthodes des implémentations concrètes. Ça me permet de factoriser dans la classe abstraite des algorithmes suivis par toutes les implémentations, en abstrayant certains détails d'implémentation que seules les classes concrètes peuvent connaitre, en gros c'est le DP "patron de méthode". Comme aucune de ces méthodes n'a de lien avec les instances en particulier, il m'a semblé logique de les rendre static.

Est-ce que je fais une erreur de raisonnement ?