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 :

Problème de visibilité d'attributs dans une classe


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Problème de visibilité d'attributs dans une classe
    Bonjour,

    J'ai le code suivant :

    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
    include 'util/Logger.php';
     
    class Toto
    {
      private $logger;
     
      public function init() 
      { 
        $logger = new Logger(); 
      }
     
      public function demarre() 
      { 
        $logger->debug('demarre');
      }
     
    }
     
    $titi = new Toto();
    $titi->init();
    $titi->demarre();

    Quand j'exécute, j'ai une erreur sur la ligne "$logger->debug('demarre')".
    Il me dit Fatal error: Call to a member function debug() on a non-object.

    Dans la fonction init(), si je fais un get_class($logger) j'ai bien "Logger" mais si je fait ce get_class() dans la fonction demarre il ne me retourne rien !

    Qu'est-ce qui ne va pas dans mon code ?
    Merci !

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    tu dois mettre $this->logger plutot pour etre sur d'appeler le logger de la classe et non le logger qui a seulement la methode comme portée.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ah oui, c'est tellement gros que je n'avais pas vu !
    Par contre ca ne marche toujours pas.

    J'ai essayé : $this->logger->debug('demarre'); et j'ai la meme erreur !

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Logger $logger;
    ?

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Non ca ca me done une erreur de syntaxe...

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    arfffff , tu peux montrer ton code corrigé stp ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Voila :

    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
    <?php
     
    include 'util/Logger.php';
     
    class Toto
    {
      private $logger;
     
      public function init() 
      { 
        $logger = new Logger(); 
      }
     
      public function demarre() 
      { 
        $this->logger->debug('demarre');
      }
     
    }
     
    $titi = new Toto();
    $titi->init();
    $titi->demarre();
     
    ?>
    C'est bon j'ai trouvé ! Comme un ... idiot, je n'ai pas changé la ligne dans le init !!

    Merci ! Il faut vraiment que je me le grave dans la tete ce $this !

    Donc pb résolu, merci !

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

Discussions similaires

  1. [C++]Problème d'attribut dans une classe
    Par narugohan dans le forum Qt
    Réponses: 13
    Dernier message: 27/01/2010, 21h17
  2. Problème d'accès au attribut d'une classe
    Par palmier dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 11/02/2008, 16h18
  3. [AS2]Visibilité de variable dans une class
    Par ViveLesQuads dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 06/12/2007, 16h47
  4. Réponses: 1
    Dernier message: 17/04/2007, 22h07
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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