constructeur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : constructeur

par zeus » 08 août 2007, 18:08

ah, d'accord ...
j'était resté sur les exemples du 1er post :lol:

par Sékiltoyai » 08 août 2007, 18:05

Je parlais du constructeur.

Dans le second exemple, la création d'une instance de subClasse n'utiliseras pas le constructeur de la classe mère car un constructeur est défini dans la classe fille mais que le constructeur de la classe mère n'est pas appelée.
Ouais, mais en l'occurence, je parlais de l'exemple de la doc :-/

par zeus » 08 août 2007, 18:03

Je parlais du constructeur.

Dans le second exemple, la création d'une instance de subClasse n'utiliseras pas le constructeur de la classe mère car un constructeur est défini dans la classe fille mais que le constructeur de la classe mère n'est pas appelée.

par Sékiltoyai » 08 août 2007, 17:54

Dans le 1er exemple, oui, dans le second, non ;)
Il parlait spécifiquement de $obj = new SubClass(); qui ne construit, dans tous les cas, qu'un objet.

par zeus » 08 août 2007, 17:45

Dans le 1er exemple, oui, dans le second, non ;)

par Sékiltoyai » 08 août 2007, 17:40

en gros si tu fait juste $obj = new SubClass(); avec l'exemple de la doc, les deux objets seront construit ;)
Non, ce n'est pas parce qu'il y a héritage que 2 objets sont construits.
C'est juste que l'objet construit hérite des propriétés et méthodes des classes parentes. Dans l'exemple, l'objet construit est juste construit avec le constructeur de sa classe et de sa classe parente (du fait de l'appel à parent::__cobnstruct() )

par BeRoots » 08 août 2007, 11:26

en gros si tu fait juste $obj = new SubClass(); avec l'exemple de la doc, les deux objets seront construit ;)

si tu instancie uniquement la classe mere la file ne construira rien...

par zeus » 08 août 2007, 09:06

Dans ton dernier exemple, il est normal que le constructeur de BaseClass soit appelé ... tu demandes la construction d'un objet BaseClasse ;)

Si j'exécute ce code chez moi, j'obtiens ce résultat :
In BaseClass constructor // grâce à la ligne $obj = new BaseClass();
In SubClass constructor // grâce à la ligne $obj = new SubClass();

par Invité » 08 août 2007, 08:18

Salut, je ne vois pas vraiment ou est ton problème, quand tu fais un $obj = new SubClass(); dans ton 2ème fragment de code, le contructeur de baseClass n'est pas appellé implicitement, si ?

par joachiim » 01 août 2007, 10:34

dsl je me suis pas identifié pour le post au dessus
je post un petit message pour recevoir les réponse à ma question
merci

constructeur

par Invité » 01 août 2007, 10:33

lisant la doc j'ai vu cela ce matin
Note: Les constructeurs parents ne sont pas appelés implicitement si la classe enfant définie un constructeur. Si vous voulez utiliser un constructeur parent, il sera nécessaire de faire appel à parent::__construct().

Exemple 19.8. Exemple d'utilisation des nouveaux constructeurs unifiés
<?php
class BaseClass {
    function __construct() {
        print "In BaseClass constructor\n";
    }
}

class SubClass extends BaseClass {
    function __construct() {
        parent::__construct();
        print "In SubClass constructor\n";
    }
}

$obj = new BaseClass();
$obj = new SubClass();
Or si on appel pas le constructeur parent il s'exécute quand même, l'exemple précédent l'exécute deux fois.
class BaseClass {
    function __construct() {
        print "In BaseClass constructor\n";
    }
}

class SubClass extends BaseClass {
    function __construct() {
        //parent::__construct();
        print "In SubClass constructor\n";
    }
}

$obj = new BaseClass();
$obj = new SubClass();
Comment cela se fait-il ?
C'est la doc ou c'est moi qui va pas ?