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] Portée des variables de classe


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut [POO] Portée des variables de classe
    Bonjour

    J'utilise des classes qui ont des variables de même nom.
    Est-ce possible de faire en sorte que ces variables soient globales, mais seulement au sein de chaque classe ?
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class truc {
    var machin = 1;
    }
    class bidule {
    function bidule() {
    $machin = 2;
    }
    function bidule2() {
    global $machin;
    echo $machin;
    }
    }
    Comment faire pour global $machin ne renvoie qu'à $machin de la classe bidule ?

    Pour l'instant, j'ai plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $b = new bidule(); //$machin vaut 2 dans b
    $t = new $truc(); //$machin vaut 1 dans t
    $b->bidule2; //affiche 1, j'aimerais que ça affiche 2
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    oulala il me semble que tu mélange pas mal de choses... quand tu fais var machin = 1 cette variable sera uniquement atteignable dans ta classe ou lors de l'instanciation $obj->machin = 10.
    C'est pas en faisant global $machin que tu vas pouvoir la récupérer.
    Si tu veux modifier la valeur machin sans utiliser de variables gloables il faut passer l'objet struct en paramètre au objet qui en on besoin.

    Je te fais 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
    17
    18
    19
    20
    21
    22
    23
    24
     
    class struct
    {
        var machin = 1;
    }
     
    class bidule
    {
        function bidule($objStruct)
        {
            $objStruct->machin = 2;
        }
    }
    class bidule2
    {
        function bidule2($objStruct)
        {
            echo $objStruct->machin;
        }
    }
     
    $struct = new struct();
    $b = new bidule($struct);
    $b2 = new bidule2($struct);

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    En fait je ne mélangeais pas les notions, mais j'ignorais "simplement" la notion de variables publiques, protégées et privées (eh oui, je n'ai aucune formation en POO).

    Résultat, j'utilisais global dès que je devais réutiliser une variable d'une fonction à une autre au sein d'une même classe sans vouloir les passer en argument.

    Par contre, je confirme que l'utilisation de global pour récupérer des variables générales (pas dans une classe) dans une classe est pratique, bien que complètement crade )

    Enfin bon je viens de commencer à comprendre, et le problème est résolu.

    Merci pour ta réponse en tous cas.

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Ok mais attention! les types public protected et private ne vont en aucun cas te permettre d'utiliser les variables d'une classe à l'autre. C'est uniquement pour spécifier l'accès lors de l'instance de la classe.

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

Discussions similaires

  1. Portée des variables de classe
    Par Pierrot92320 dans le forum Général Python
    Réponses: 24
    Dernier message: 11/01/2014, 08h50
  2. Portée des variables entre classes
    Par Gnifrus dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/03/2013, 14h37
  3. [POO] Portée des variables
    Par jpean.net dans le forum Langage
    Réponses: 4
    Dernier message: 02/04/2007, 20h52
  4. [POO] Portées des variables //
    Par hisy dans le forum Langage
    Réponses: 5
    Dernier message: 01/02/2007, 13h55
  5. [POO] Portée des variables, classe....
    Par Avatar dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2005, 21h25

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