POO héritage

Résolu/Fermé
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 16 juin 2009 à 21:43
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 16 juin 2009 à 22:45
Bonjour,

Le problème qui m'accable parvient peu à peu à avoir raison sur ma santé mentale, j'ai donc besoin d'aide (vous pouvez me filer le numéro de SOS suicides, ça me fera toujours sourire -_-' ;) )

Voilà, je programme en POO avec PHP depuis quelques temps déjà et je commence à me lancer dans ce vaste bourbier qu'est le principe de l'héritage.

Voici:

class sectorAC {
    protected $sct;
    function __construct($sct){
        $this->sct=$sct;
    }
}
class articles extends sectorAC{
    function __construct(){
        echo $this->sct;
    }
}


Comme vous le comprendrez je cherche à récupérer la variable sct déclarée dans sectorAC en appliquant extends à articles, et à l'écran, pas de retour.

J'ai vu des tutos, des sujets, j'ai même un gros pavé sous le nez pour essayer de comprendre où est mon erreur, rien n'y fait :s.

Quelqu'un peut il m'éclairer?

Smoke

3 réponses

hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
16 juin 2009 à 21:59
Ce que t'as fait

class sectorAC {
protected $sct;
function __construct($sct){
$this->sct=$sct;
}
}
class articles extends sectorAC{
function __construct(){
echo $this->sct;
}
}


L'erreur

je suppose que tu fait l'instanciation de la classe articles comme ça:

$a=new articles();

où bien

$sct=...
$a=new articles($sct)


Dans les deux cas rien ne serra affiché. pourquoi? je t'explique
1-new articles() ou new articles($sct) les deux appelent le constructeur de la classe articles et pas celui de la classe mère.
2-le constructeur de la classe articles n'affecte rien à l'attribut $sct, et donc $this->sct est tjr vide.

La Solution

class sectorAC {
protected $sct;
function __construct($sct){
$this->sct=$sct;
}
}
class articles extends sectorAC{
function __construct($sct){

parent::__construct($sct);
echo $this->sct;

}
}


Allah mo3ine
0
Godboss Messages postés 69 Date d'inscription lundi 4 février 2008 Statut Membre Dernière intervention 18 juin 2009 18
16 juin 2009 à 22:04
Bonjour,

Ta variable $sct n'est jamais initialisée. Essaye cela :

class sectorAC {
protected $sct;
function __construct($sct){
$this->sct=$sct;
}
}
class articles extends sectorAC{
function __construct(){
parent::__construct("Bonjour");
echo $this->sct;
}
}

new articles();
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
16 juin 2009 à 22:45
Merci bien messieurs :D vous m'avez sauvé ma journée!
Votre solution fonctionne en effet, et je ne l'avais croisée nul part :) vous avez donc toute ma gratitude et je m'incline face à votre savoir^^

Bonne soirée, et merci encore ;)

Smoke
0