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 :

[POO] Poo : héritage & constructeur


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [POO] Poo : héritage & constructeur
    bonjour, je suis face à une colle avec le paradigme objet de PHP4 :
    ma classe B hérite de ma classe A. Lorsque je créé une instance de B je souhaiterai exécuter le constructeur de A automatiquement... est-ce que c'est possible ?

    exemple (avec PHP4) :

    classe A{
    function A(){
    echo 'constructeur de A \n';
    }
    }

    classe A extends B {
    function B(){
    echo 'constructeur de B \n';
    }
    }

    //test :
    $myB = new B;

    //résultat attendu : (peu importe l'ordre)
    constructeur de B
    constructeur de A

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Je me suis bien pris la tête sur ce sujet en php5 (après ca différe surement de la version 4)

    Mais en php5 quand tu instancie un objet de ta classe héritée qui n'a pas de constructeur défini alors il appelle automatiquement le constructeur parent.

    Dans le cas contraire à toi d'appeler le constructeur parent dans le constructeur enfant....

    PS : ton exemple est faux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    classe A extends B {
    function B(){
    echo 'constructeur de B \n';
    }
    }
     
    //test :
    $myB = new B;
    C'est class B extends A et non l'inverse

    Pour appeler ton constructeur parent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    classe B extends A {
    function B(){
    
    echo 'constructeur de B \n';
    $this->A();
    }
    }
    
    //test :
    $myB = new B;
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Invité
    Invité(e)
    Par défaut merci
    bon, si en PHP5 il faut appeller le constructeur parent manuellement dans le constructeur enfant, alors ça règle le problème...

    en tout cas, merci pour ta réponse guitou !

    (euh... faute d'inattention dans mon exemple)

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut La doc la doc !...
    il y a une syntaxe pour appeler le constructeur parent directement dans la classe en cours. Je vais chercher !
    Edit :
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

Discussions similaires

  1. [WD16] POO - Héritage et constructeurs
    Par m.renaud dans le forum WinDev
    Réponses: 11
    Dernier message: 19/10/2012, 15h56
  2. [POO] héritage de constructeurs
    Par benkunz dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2007, 15h29
  3. [POO] Gérer les différents constructeurs
    Par m_celny dans le forum Langage
    Réponses: 6
    Dernier message: 13/05/2006, 14h04
  4. [POO]Question sur les constructeurs
    Par Burinho dans le forum Langage
    Réponses: 16
    Dernier message: 08/04/2006, 21h56
  5. [POO]héritage du constructeur de la classe parente
    Par new_wave dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2006, 14h25

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