IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Accéder à un attribut statique d'une classe fille [Fait] [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Points
    37
    Par défaut Accéder à un attribut statique d'une classe fille
    Bonjour,
    j'essaye de faire une chose qui me semble pas incroyable mais je crois que mes réflexes java ne me permettent pas de trouver la solution (et mes recherches web ne donnent pas grand chose).

    J'ai une classe abstraite A, et une classe B qui hérite cette classe A. Dans les deux j'ai un attribut statique. J'aimerais que quand j'appelle une méthode sur un objet A (méthode héritée de B) ça me donne l'attribut de A, pas celui de B.
    Mais je en vois pas comment faire :-/

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    abstract class A {
     
    	public static $myVar = 123;
     
        public static function test() {
              echo self::$myVar;
        }
    }
     
    class B extends A {
        public static $myVar = 456;
    }
     
    $b = new B;
    $b->test(); // Affiche "123", j'aimerais avoir "456"
    Je me serais attendu à "456", même si le self:: fait effectivement son travail.

    J'ai donc cherché d'autres solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    abstract class A {
     
    	public static $myVar = 123;
     
    	public static $myClass;
     
     
     
    	public function __construct($class){
    		self::$myClass = $class;
    	}
     
        public static function test() {
        	eval( "\$g = " . self::$myClass . "::\$myVar;" );
            echo $g;
        }
    }
     
    class B extends A {
        public static $myVar = 456;
     
        public function __construct(){
        	parent::__construct(__CLASS__);
        }
    }
     
    $b = new B;
    $b->test();
    Ca fonctionne mais c'est pas ce qu'il y a de plus propre. Y-a-t-il d'autres solutions?
    (j'ai vu que PHP 5.3 proposera qqes améliorations de ce coté, mais en attendant au moins).

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Non, pas de solution miracle en attendant la version 5.3, sinon envisager d'utiliser un membre protected plutôt qu'un membre statique ; il en a été question dans ce fil.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Points : 37
    Points
    37
    Par défaut
    D'accord, ton topic en lien est bien intéressant, merci pour les infos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès aux attributs propres à une classe fille
    Par jamilya dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 24/12/2008, 15h06
  2. Accèder à une classe fille depuis la classe mère
    Par Phreak0x dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/10/2008, 10h14
  3. Réponses: 4
    Dernier message: 16/03/2008, 18h06
  4. [debutant]appeller une fonction d'une classe fille et mere ?
    Par Battosaiii dans le forum Débuter
    Réponses: 1
    Dernier message: 12/11/2005, 12h56
  5. attribut partagé d'une classe
    Par tanjonaravelson dans le forum Général Python
    Réponses: 3
    Dernier message: 27/09/2005, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo