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 :

Access to undeclared static property [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Par défaut Access to undeclared static property
    Bonjour tout le monde
    Comment ça va ?
    Je viens vers vous car je n'arrive pas a résoudre un problème depuis ce matin j'ai ce message d'erreur :
    Fatal error: Access to undeclared static property: technicien::$_db in C:\wamp\www\lcesa2\technicien.class.php on line 17
    Voici le code :
    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
    <?php 
    require_once "connexionBDD.class.php";
    class technicien {
    	public function technicien(){		
    		$connexion = new Mysql();
    		$connexion->Connect();
    	}
    	public function getList(){
    	$tech = array(); 
        $q = technicien::$_db->query('SELECT Nom FROM technicien');
        while ($donnees = $q->fetch(PDO::FETCH_ASSOC)){
          $tech[] = new technicien($donnees);
        }
        return $tech;
    }
    }
    ?>
    Voici la ligne 17 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q = technicien::$_db->query('SELECT Nom FROM technicien')
    Je debute en POO et j'avoue avoir du mal a comprendre comment cela fonctionne mais faut s'accrocher

    Merci pour votre aide et votre patiente toujours précieuse les amis !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q = $this->connexion->query('SELECT Nom FROM technicien');
    La syntaxe avec :: se lit "objet::methodestatique()".
    En dehors de la syntaxe, tu vois bien que $_db n'existe nul part dans ta classe.

    Pour le reste, je ne vois pas bien ce que tu essaies de faire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tech[] = new technicien($donnees);
    Ce n'est pas plutôt simplement
    ?

    Attention aussi : si tu as une méthode "technicien" dans une classe "technicien", cette méthode sera un constructeur pour la classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Par défaut
    Bonjour sabotage et merci de ton aide =)
    J'ai remplacé le code que j'avais enfin la ligne par la tienne voici le message d'erreur qui est présent en PLUS du précédent :
    Notice: Undefined property: technicien::$connexion in C:\wamp\www\lcesa2\technicien.class.php on line 19
    Bah je veux les retourner en objet mes résultats .. j'en conclus que ce n'est pas la bonne méthode pour se faire lol
    Oui c'est voulu que ce soit un constructeur ^^


    ------------

    Du coup j'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $q = technicien::$connexion->query('SELECT Nom FROM technicien');
    Message d'erreur :
    Fatal error: Access to undeclared static property: technicien::$connexion in C:\wamp\www\lcesa2\technicien.class.php on line 19

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Par défaut
    Bonjour a tous, le problème persiste et je n'ai toujours pas trouver de solution est ce quelqu'un aurait une idée ?
    Merci pour voter aide

  5. #5
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour,

    Sabotage t'as déjà répondu, et je ne vois rien qu'il n'ait pas couvert ici...

    En gros, tu as des méthodes et propriétés dites statiques ou de classe, accessible en utilisant nom_de_classe::méthode_ou_propriété, qui doivent être explicitement déclarées statiques (static), et de l'autre côté tu as les propriétés et méthodes de ton objet (appartenant à une instance donnée de la classe), accessible en interne avec $this;

    Il va donc falloir dans ton constructeur (que tu peux renommer __construct() au lieu de technicien()) que tu assignes ton instance de PDO à quelquechose que tu pourras utiliser dans ta classe, car la le scope de $connexion est interne à ton constructeur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class technicien {
     
            private $connexion;
     
    	public function __construct(){		
    		$this->connexion = new Mysql();
    		$this->connexion->Connect();
    	}
    }
    Tu remarqueras le $this qui precède connexion, permettant la référence à l'attribut connexion de ton objet. Tu devras aussi l'utiliser pour les accès suivants.
    Je ne sais pas d'où sort ta classe Mysql, mais en général en php on utilise une minuscule au début des noms de méthodes (majuscule pour le nom de classe), donc je serais d'avis de renommer Connect() dans Mysql...

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Par défaut
    Bonjour théocrite =)
    j'avais fais ce que sabo' m'avais dit et je viens de faire ce que tu m'as proposé mais j'ai toujours le même message d'erreur voici le code de connexionBDD.php :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
     
    class Mysql {
        //informations de connexion
        private static $serveursql = "localhost";
        private static $utilisateursql = "root";
        private static $passwordsql = "lcesa";
        private static $basesql = "lcesa";
     
        private static $connecte = false;
        private static $bdd = null;
     
        public function Mysql()
        {
            try
            {
                $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                Mysql::$bdd = new PDO('mysql:host='.Mysql::$serveursql.';dbname='.Mysql::$basesql, Mysql::$utilisateursql, Mysql::$passwordsql, $pdo_options);
                Mysql::$connecte = true;
            }
            catch (Exception $e)
            {
                die('Erreur : ' . $e->getMessage());
            }
        }
     
        public static function Connect()
        {
            if (!Mysql::$connecte){
                $obj = new Mysql();
                return Mysql::$bdd;
            }
            else
                return Mysql::$bdd;
        }
     
        public static function Disconnect()
        {
            $connecte = false;
            $bdd = null;
        }
     
        public static function IsConnected()
        {
            return $connecte;
        }
     
    }
     
    ?>

    Et voici le code de technicien.class.php :

    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
    26
    27
    28
    <?php 
     
    require_once "connexionBDD.class.php";
     
    class technicien {
     
        private $connexion;
     
    	public function __construct(){		
    		$this->connexion = new Mysql();
    		$this->connexion->Connect();
    	}
     
    	public function getList()
    	{
    		$q = thist->connexion->query('SELECT Nom FROM technicien');
     
    		while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
    		{
    			$tech[] = $donnees;
    		}
     
    		return $tech;
    	}
     
    }
     
    ?>

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

Discussions similaires

  1. The static method should be accessed in a static way
    Par Memeche dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 10/03/2014, 09h18
  2. static method should be accessed in a static way
    Par b_lob dans le forum Général Java
    Réponses: 18
    Dernier message: 04/05/2011, 00h41
  3. erreur 1119: Access of possibly undefined property ..
    Par ouldfella dans le forum Flash
    Réponses: 1
    Dernier message: 23/03/2010, 12h25
  4. Réponses: 20
    Dernier message: 21/06/2006, 20h44
  5. access 97 - DAO - objet property
    Par sundjata dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/11/2005, 04h17

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