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 :

Modifier une variable statique (membre d'une classe )


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 52
    Points
    52
    Par défaut Modifier une variable statique (membre d'une classe )
    Bonjour,

    Je n'arrive pas à trouver dans la documentation PHP s'il est possible de modifier une variable statique définie comme variable membre d'une classe.

    Un exemple avec les classes A et B ainsi que $zest, la variable membre de la classe A qu'on souhaite incrémenter depuis la classe B.

    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 A
    {
      public static $zest = 0;
    }
     
    class B
    {
      public function maFonction()
      {
         A::$zest = A::$zest++; 
      }
     
    $b = new B(); 
    $b->maFonction();  //  A::$zest vaut 1
     
    $bb = new B()
    $bb->maFonction(); // A::$zest vaut toujours 1

    Je constate qu'à chaque instanciation de B, A::$zest vaut toujours 0.

    Est-ce normal? N'est il pas possible d'utiliser une variable statique membre d'une classe comme on pourrait utiliser une variable de session...

    merci d'avance pour vos réponses


    riccco

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Ce n'est pas un problème de variable statique ou non, mais d'incrémentation (voir http://php.net/language.operators.increment) : A::$zest++ incrémente bien la variable, mais retourne sa valeur avant incrémentation, qui est ré-assignée à A::$zest... Autant dire que ça ne fait rien.

    Essaie en remplaçant :
    par :
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A::$zest = A::$zest + 1;
    ou encore :

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    D'ailleurs c'est un comportement bizzare de php que je n'avais jamais remarqué car si tu fais :

    en C++ ça donne bien 1, ce qui me semble normal alors qu'en php dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $i = 0;
    $i = $i++;
    echo $i;
    l'incrémentation est tout simplement ignorée.
    Vive les roues en pierre

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    D'ailleurs c'est un comportement bizzare de php que je n'avais jamais remarqué car si tu fais :

    en C++ ça donne bien 1
    Désolé de te contredire, mais en C++, le comportement est le même : i++ renvoie la valeur de i avant incrémentation, et si on le réaffecte à i... cette valeur ne change pas.

    Edit : en fait, pour être plus précis, c'est un comportement indéterminé il me semble, car on ne sait pas si l'incrémentation de i se fait avant ou après l'affectation. En tous les cas, c'est une écriture à proscrire

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Points : 52
    Points
    52
    Par défaut
    Merci de vos réponses éclairantes

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Eusebe, bin justement j'ai testé avant de poster ^^, ok merci, je ne savais pas que c'était indéterminé.
    Vive les roues en pierre

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

Discussions similaires

  1. Contenu d'une variable devenant lui même une variable
    Par Copyright83 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 14/11/2012, 17h24
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. Réponses: 7
    Dernier message: 07/05/2010, 09h52
  4. [Smarty] Récuper une variable php à partir d'une variable Smarty
    Par SPKlls dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/04/2008, 17h40
  5. [Free Pascal] [2.2] Impossible d'assigner une variable de type T à une variable de type T
    Par Hibou57 dans le forum Free Pascal
    Réponses: 3
    Dernier message: 12/10/2007, 12h31

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