Posez votre question Signaler

POO héritage [Résolu]

Smoking bird 886Messages postés 11 mars 2008Date d'inscription 10 juillet 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

POO héritage »

3 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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();
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « POO héritage » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook