POO héritage

Résolu
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. 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
    1. 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();
      1. 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