Wpis z mikrobloga

Mam taki kod:

class A {
protected $a;
}

class B extends A{
}

$b = new B();

to nie dziala:

$b->a

ale to już tak

class B extends A{

public function __construct(){
$this->a = 'test';
}
}

dlaczego? Przecież B dziedziczy właściwość a i jeżeli jest ta właściwość dostępna w ciele klasy to dlaczego nie po utworzeniu obiektu?

#php #webdev
  • 7
@Cybe: protected widoczne jest we wlasnej klasie lub klasie potomnej, nie poza klasa, czyli nie w stworzonym poza nia obiekcie. zrób ja public albo dopisz getera jak chcesz mieć protected
@CrazyBaran: raczej się z tym nie zgodzę, przy dziedziczeniu te zmienne mają nadal dostępność protected, to byłoby moim zdaniem nielogiczne gdyby zmieniało się na private.

@Faley: wiem jak to zrobić żeby działało, chciałem tylko teoretycznie się tego dowiedzieć :)