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 :

PHP : Class : instance de class


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut PHP : Class : instance de class
    Bonjour,

    j'ai un soucis de déclaration de class.

    J'ai un PHP qui insère mes déclarations de class voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    // Liste des class pour le site
    include ("class_site.php");
    include ("class_bdd.php");
    include ("class_base.php");
    include ("class_element.php");
    Et ensuite je fais des extensions de class, c'est à dire :
    article_element extends element
    element extends base

    Dans la class element, je crée l'objet Bdd comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	function __construct() // Construction de l'objet
    	{
    		$Bdd = new Bdd_Class();
    		$Table = new Table_Class();
    		$this->Table = $Table;
    	}
    Et dans la class article_element, j'ai bien entendu mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	function __construct()//Construction de l'objet
    	{
    		parent::__construct();
    la class article_element étant une extension de la class element, je devrais retrouver l'objet non ?
    Et en fait non, quand j'essaie d'utiliser l'objet Bdd, j'ai une erreur :
    Notice: Undefined variable: Bdd in D:\Dropbox\Dropbox\_Stephane\Web\neard\www\aleph2at.free.fr\prog\php\class\class_article_element.php on line 143
    Quelqu'un a une idée ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2017
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    As tu déclaré $bdd comme un attribut de la classe mère (element) ?, il faudrait être comme ca :

    Note : le niveau de visibilité devrait être à partir protected

    dans le constructor de la classe element :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function __construct() {
      $this->bdd = new Bdd_class();
    }
    Enfin, tu pourras le retrouver dans la classe article_element qui hérite de la classe element

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut Bdd n'est pas une class fille
    Bdd n'est pas une class fille, c'est la class qui s'occupe de la base de données et donc elle est indépendante des autres class.

    Ce que je ne comprends pas c'est que je fais appel à des class non fille dans d'autres class et cela fonctionne très bien.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2017
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Je n'ai pas dit que Bdd est une classe fille. Tu as déclaré $Bdd comme une variable local dans le __constructor() et tu as essayé d'accéder à la variable $Bdd alors que cette variable n'est pas l'attribut de la classe mère, c'est normal qu'il cause une erreur.

  5. #5
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Je comprends ta réponse. Donc même si le parent déclare la variable avec un "= new" , je ne peux pas y accéder dans une class fille ?
    Pourquoi la class fille n'hérite pas de la déclaration du parent ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2017
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    C'est vrai que tu as déclaré $Bdd = new Bdd_Class() dans le constructor() mais pour pouvoir accéder à cette variable depuis la classe fille, il faut que cette variable soit un attribut de la classe mère (comme tu as fait pour la variable $this->Table, essayer de l'utiliser dans la classe fille pour voir si ca marche). Tu ne peux pas accéder aux variables locales dans les méthodes de la classe mère.

  7. #7
    Membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Points : 63
    Points
    63
    Par défaut
    Ok merci pour l'aide.
    J'ai finalement décidé de déclarer la class Bdd comme paramètre de l'objet parent Element comme ça chaque fille en hérite.

    Merci d'avoir pris le temps de me répondre. Bonne journée

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

Discussions similaires

  1. Instance de classe et une classe ?
    Par WhiteTigerZ dans le forum Général Java
    Réponses: 6
    Dernier message: 10/08/2010, 12h28
  2. class pour table + class pour td = class td non fonctionnelle ?
    Par supergrey dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/05/2009, 08h13
  3. Réponses: 2
    Dernier message: 09/10/2005, 15h35
  4. Instance de classes
    Par KymZen dans le forum Tkinter
    Réponses: 9
    Dernier message: 07/04/2005, 08h35
  5. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16

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