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. 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
    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. 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