heritage, fonction static et "self"

OvEr
Invité n'ayant pas de compte PHPfrance

11 janv. 2007, 20:10

Bonjour, j ai un petit problème auquel il doit exister des millions de solution mais je cherche la plus propre :)


Mon probleme :
class classeA {

function __construct(){}

public static function methodA()
{
$object = new self;
echo get_class( $object );
}
}

class classeB extends classeA {

function __construct(){}
}

classeB::methodA();

//Affiche :
//classeA

Alors que je passe par la classeB pour l'appeler...
Comment dois-je faire pour recuperer le bon nom de classe sans passer quoi que ce soit en parametre ?

Mammouth du PHP | 1885 Messages

11 janv. 2007, 20:46

parent?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

OvEr
Invité n'ayant pas de compte PHPfrance

11 janv. 2007, 20:47

Non, Parent c classeA si g t dans classeB mais la c est le contraire presque.

Mammouth du PHP | 19672 Messages

11 janv. 2007, 22:12

Modération :
OvEr, nous sommes dans un forum francophone.
Tu as devant toi un clavier complet et tu disposes de la place que tu désires pour écrire.
Merci de rédiger tes messages dans un français intelligible pour tous.
Ce sera bénéfique pour ta demande d'aide.

Merci de prendre le temps de lire les règlements.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1885 Messages

11 janv. 2007, 22:17

self serait alors approprié non?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 25 Messages

12 janv. 2007, 03:16

Vu que la fonction get_class est appelée à partir de la classe parent, n'est-il pas normal qu'il retourne le nom de la classe parent ?? :wink:

Mammouth du PHP | 1885 Messages

12 janv. 2007, 05:44

Pour l'instant, il n'y a aucun moyen de déterminer à partir de quelle classe une méthode statique a été appellée.

Voir les commentaires sur php.net:
Seems like static function always belong to its class.
I have been thus far unable to determine a reliable way to get the actual class from a static method.
http://www.php.net/get_class
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 505 Messages

12 janv. 2007, 10:13

Il n'y a pas de d'évaluation faite sur les membres static, tout les références sont effectué a la compile.

voir ici pour les évolutions possible.


voir la doc de static
http://fr.php.net/manual/fr/language.oop5.static.php
En fait, les appels de méthodes statiques sont résolus au moment de la compilation. Lorsque l'on utilise un nom de classe explicite, la méthode est déjà identifiée complètement et aucune notion d'héritage n'est appliquée. Si l'appel est effectuée par le mot clé self, alors self est traduit en la classe courante, qui est la classe appartenant au code. Ici aussi, aucune notion d'héritage n'est appliquée.


Pas de solution à ton problème.

Invité
Invité n'ayant pas de compte PHPfrance

12 janv. 2007, 12:02

Merci pour le lien et désolé pour le style SMS.