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 :

[Système] Accès methode parent


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Webmaster
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut [Système] Accès methode parent
    Bonjour,
    Je souhaite savoir si il est possible d'appeler une methode parente qui a été redefinie par un enfant. En clair j'ai une classe bien qui posséde une methode load, j'ai une classe maison qui hérite de bien et qui posséde egalement une méthode load.
    lorsque je créé une instance de bien je voudrai pouvoir appeler la méthode load du parent.

    si je fais:
    $maison = new Maison();
    $maison->load();
    ca appelle la méthode de la classe Maison, ce qui est normal. Alors comment faire pour lui dire d'appeler la méthode de la classe parente.
    par exemple un truc du genre
    $maison->parent->load();
    sachant que cette ecriture ne fonctionne pas.
    Merci beacoup par avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    salut
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function load(){
     parent::load();
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $maison = new Maison();
    $maison->load()

  3. #3
    Membre à l'essai
    Profil pro
    Webmaster
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    salut
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function load(){
     parent::load();
    }
    Oui mais cela n'est valable que si je suis a l'interieur de ma classe. Dans mon cas je ne suis pas dans la declaration de ma classe.

    ma fonction load fille na aucun rapport avec la fonction load mère, je n'appelle donc pas parent::load() dans la methode load de la classe fille.

    En fait je veut dans un script pouvoir appeler la fonction load du parent sans passer par une méthode de la classe fille. Sinon la solution est facile il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function load_parent()
    {
        parent::load();
    }
    et ensuite appeler la fonction load_parent de la fille qui appellera la mère.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    je n'ai pas trop compris ce que tu veut faire

    mais je pense que si la method fille 'load' ne peut apeller la method 'load' parent c'est que l'heritage n'est pas indiqué

    sinon regarde du cote de __call

  5. #5
    Membre à l'essai
    Profil pro
    Webmaster
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Sisi l'héritage fonctionne parfaitement, la fonction load fille peut tout a fait appeler la fonction mère en faisant parent::load() mais je ne veut pas appeller la fonction mère dans la fonction fille.
    Apparement ce que je souhaite faire n'est pas possible en php, tanpis.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    Apparement ce que je souhaite faire n'est pas possible en php, tanpis.
    pour ma part mon probleme c'est que j'ai pas bien compris ton probleme

    je ne veut pas appeller la fonction mère dans la fonction fille.
    c'est en ca que je pense que l'heritage n'est pas indiqué

    si tu expliquai ton probleme avec un petit exemple

  7. #7
    Membre à l'essai
    Profil pro
    Webmaster
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Ok allez on se fait une petit 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
    class Bien {
    public function load ()
    {        
        $query = 'SELECT * '.
                     'FROM biens ' .
                     'WHERE id_biens = '.$this->id;
     
        // ensuite execution de la requete et je stocke les valeur dans les données membres
    }
     
    class Maison extend Bien {
     
    public function load ()
    {
        $query = 'SELECT * '.
                     'FROM maisons ' .
                     'WHERE id_maisons = '.$this->id;
     
        // execution de la requete et stockage dans les données membres
    }
    Voila les classes ne sont pas compléte car elles sont assez grande mais tu vois les deux classes avec l'héritage et la surcharge de la fonction load.

    La fonction load de la mere va chercher les données dans la base pour remplir les données membres, pareil pour la fille qui rempli les données membres de maison. Si j'appelle la classe load parente dans la classe fille il me chargera les données depuis la base dans bien des que je voudrait charger une maison. En soit c'est sur que c'est logique mais niveau optimisation ca vaut pas grand chose. Ca sert a rien d'effetcuer une requete si on a pas besoin des données.

    Je veut donc pouvoir a tout moment appeller la fonction load parent depuis une instance de la classe et non depuis la classe elle même. Mais il n'existe pas d'ecriture pour appeler une méthode parent depuis une instance.

    Quand on est dans la définition de la classe on fait simplement parent::load()
    Mais vu que je suis dans une instance j'ai fait avant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $maison = new Maison ();
    A partir de cette instance je ne peut pas appeler une methode parente si elle a été surchargé. la seule solution que j'ai trouvé et de faire dans ma classe fille une méthode load_parent comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function load_parent ()
    {
        parent::load();
    }
    Ca fonctionne parfaitement mais je voulais juste savoir si il n'était pas possible d'appeler une méthodes de la mére depuis une instance de la fille et non pas depuis la definition de la fille.

    Je sais pas si j'ai été clair

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    la c'est clair
    et la response est non, a partir du moment ou elle sont surchargé

  9. #9
    Membre à l'essai
    Profil pro
    Webmaster
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Citation Envoyé par jeff_!
    et la response est non, a partir du moment ou elle sont surchargé
    Oui merci c'est pour ca que je disais que ce n'était pas possible en php, merci quand même

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

Discussions similaires

  1. probleme accès methode statique
    Par jpsegret dans le forum Langage
    Réponses: 5
    Dernier message: 02/04/2007, 16h40
  2. Réponses: 5
    Dernier message: 09/10/2006, 15h07
  3. [Système] accès root sécurisé sans mdp
    Par onet dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2006, 22h18
  4. [C#] Question de debutant: methode "parent&quo
    Par bflash2k dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/01/2006, 16h37
  5. [Language]Appel de méthode parente
    Par mitje dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2005, 18h25

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