POO héritage

Résolu
Smoking bird Messages postés 911 Statut Membre -  
Smoking bird Messages postés 911 Statut Membre -
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
Configuration: Windows Vista
Opera 9.64

3 réponses

  1. hamzafes Messages postés 258 Statut Membre 54
     
    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
  2. Godboss Messages postés 69 Statut Membre 18
     
    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
  3. Smoking bird Messages postés 911 Statut Membre 58
     
    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