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 :

[POO] Déclaration de variable de classe publique dans PHP4


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut [POO] Déclaration de variable de classe publique dans PHP4
    Voilà j'ai 2 classes, une parent et une fille.

    Comment faire pour récupérer dans la classe fille, une variable déjà instanciée dans la classe parent ?

    Apparement php4 ne supporte pas la définition de variables publiques, privées, ..

    Je supose qu'il doit y avoir une autre méthode ?

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    salut,
    en php4 la classe utilise des champs préfixés par le mot-clé var, en php5 la notion de visibilité apparaît, on met donc le mot-clé correspondant ( public, private, protected )

    pour récupérer une variable statique ( sans l'instance )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mavar = maclass::monchampsdeclasse;
    sinon avec l'instance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $monobjet = new Objet();
    $mavar = $monobjet->mavar;

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    J'ai peut etre omis de dire que je veux récupérer la variable dans la classe fille elle meme, donc à l'aide d'un pointeur $this

    En gros voilà mon fonctionnement

    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
     
    class parent {
    var $TEST;
     
    function constructeur($test){
    //je donne une valeur à $TEST
    $this->TEST=$test;
    }
     
    }
     
    class fille extends parent {
     
    function x (){
    echo $this->TEST;
    }
    }
    Cet exemple ne fonctionne pas, dans la classe fille $this->TEST n'est pas défini..

    edit : bon en fait c'est logique que le pointeur ne fonctionne pas, ce n'est pas le même objet .. mais comment faire ?

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    déjà évites les noms genre parent, car ils existent comme mot-clé, je sais que c'est pour l'exemple mais bon...

    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
     
    class MaClasse {
     
       var $TEST;
     
       // constructeur
       function MaClasse($test){
     
          //je donne une valeur à $TEST
          $this->TEST=$test;
     
       }
     
    }
     
    class Fille extends MaClasse {
     
        $this->MaClasse("exemple");
     
        function dismoitout (){
     
            echo $this->TEST;
        }
     
    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Ya pas moyen sans faire de nouveau appel au constructeur de la classe parent ? Car ma classe parent est déjà instanciée, et les fonctions que j'utilise sont beaucoup plus lourdes que dans mon exemple. Donc rappeler le constructeur c'est un peu galere niveau optimisation..

    Merci de ton aide

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    heuu, attends si tu instancies la classe parent, tu n'as donc pas besoin de faire hériter la classe fille...

    sinon le fait qu'elle hérite de la classe parent crée une nouvelle référence de cette classe avec ses propre attributs et méthodes, il s'agit donc de deux objets distincts ...

    donc pas moyen, m'enfin d'aprés moi...

  7. #7
    Membre régulier Avatar de KneXtasY
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 121
    Points : 109
    Points
    109
    Par défaut
    Tu peux définir le constructeur de la classe fille, mais ce constructeur fera obligatoirement appelle au constructeur de la classe parente.

    Enfin je crois non ?
    Lupus or not Lupus ?

Discussions similaires

  1. Variable de classe inutilisable dans le listener de ma JComboBox
    Par seb759 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 26/07/2012, 09h12
  2. Réponses: 4
    Dernier message: 25/06/2009, 15h14
  3. [POO] Création dynamique de variables de classe
    Par Philoulheinz dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2007, 15h38
  4. [POO] Portée des variables de classe
    Par guidav dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2007, 19h27
  5. Réponses: 7
    Dernier message: 24/01/2007, 10h01

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