Normalerweise definiere ich Attribute einer PHP Klasse private .

Allerdings bin ich nun auf einige Hindernisse gestoßen. Nämlich dann wenn man auf Variablen einer geerbten Klasse zugreifen will.

   1: private $brei; 
   2:  
   3:     public function setBrei(){
   4:         $this->brei='suess';
   5:         echo $brei;
   6:     }
   7: } 
   8:  
   9: class bar extends foo{ 
  10:  
  11:      public function setGeschmack(){
  12:         parent::setBrei();
  13:         $this->brei='salzig';
  14:         echo $brei;
  15:      }
  16: }

Anders als zum Beispiel hier dargestellt, kann man in diesem Fall eben nicht mit $this->brei auf die parent Variable zugreifen, wenn diese private ist.

Zeile 7 ergibt:

suess 

Zeile 16 ergibt

suess anstatt salzig wie erwartet!

Nach mehrmaligen Probieren kam ich auf die Lösung, dass es an der private Deklaration liegt. Wenn stattdessen protected genutzt wird, führt das Beispiel zum erwünschten Ergebnis.

   1: protected $brei;
   2:  
   3:     public function setBrei(){
   4:         $this->brei='suess';
   5:         echo $brei;
   6:     }
   7: }
   8:  
   9: class bar extends foo{
  10:  
  11:      public function setGeschmack(){
  12:         parent::setBrei();
  13:         $this->brei='salzig';
  14:         echo $brei;
  15:      }
  16: }

 

Technorati-Tags: ,,