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 :

Question au sujet des variables de classes. [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut Question au sujet des variables de classes.
    Bonjour à tous,

    J'ai un petit problème que je n'arrive pas à comprendre.
    Je fais essayer de 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
    17
    18
    19
    20
    21
    22
     
    Class a{
     
    public $valeur;
     
    function verif(){
    b::longueur();
    }
     
    }
     
    Class b{
     
    function longueur(){
    echo $objet->valeur;// Ne marche pas
    echo $this->valeur;// Marche
    }
     
    }
     
    $objet=new a();
    $objet->verif();
    Je me dis que $objet->valeur ne marche pas vu qu'a l'intérieur d'une fonction, à par les variables globales, le reste n'existe pas.
    $this->valeur fonctionne par contre et je ne comprend pas pourquoi. c'est comme si, comme je l'avais appelé d'un objet de la classe a, la fonction longueur faisait aussi partie de la classe a.

    Je ne sais pas si je suis très clair mais si quelqu'un pouvait m'éclairer parce que je n'ai rien trouvé qui explique ce phénomène.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    Et si je passe la variable en private, la 2eme solution ne marche plus non plus.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    dans B $objet n'existe pas, et tu peux pas acceder a $this en statique

    qu'est ce que tu voudrais avoir au final ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    Mais pourquoi puis je accéder à $this alors que je suis dans une fonction d'une autre classe?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par choupierre Voir le message
    Mais pourquoi puis je accéder à $this alors que je suis dans une fonction d'une autre classe?

    par que ton mode d'erreur est trop bas, et que une fonction static dois etre définie via le mot clé "static"
    public static function longueur

    la tu appelle statiquement une fonction non statique
    travaille en E_ALL | E_STRICT

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 329
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 329
    Billets dans le blog
    17
    Par défaut
    $this->valeur fonctionne par contre et je ne comprend pas pourquoi.
    Moi non plus D'ailleurs si on exécute ton script en mode strict on obtient :

    Strict Standards: Non-static method b::longueur() should not be called statically, assuming $this from incompatible context in C:\dev\www\Tests\oop.php on line 11

    Bref, à éviter.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Moi non plus D'ailleurs si on exécute ton script en mode strict on obtient :

    Strict Standards: Non-static method b::longueur() should not be called statically, assuming $this from incompatible context in C:\dev\www\Tests\oop.php on line 11

    Bref, à éviter.
    tu peux le faire mais c'est une erreur de type Strict Standards, $this reste dans le scope de la méthode verif de A

  8. #8
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 329
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 329
    Billets dans le blog
    17
    Par défaut
    tu peux le faire
    Je le découvre ici et cela me semble être un non-sens, j'éviterai donc.

    $this reste dans le scope de la méthode verif de A
    Ouaip on dirait.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 13
    Par défaut
    Merci beaucoup, cela s'éclaire un peu dans ma tete.

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

Discussions similaires

  1. Questions au sujet des activex
    Par Sonic dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/04/2007, 12h32
  2. Créer des variables de classe dynamiquement
    Par Sebastien13 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2007, 22h00
  3. [POO] Portée des variables de classe
    Par guidav dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2007, 19h27
  4. Réponses: 4
    Dernier message: 04/06/2006, 16h53
  5. Accès a des variables de classes
    Par lalouve dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 11/05/2006, 16h48

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