Portál AbcLinuxu, 12. února 2026 00:04
class Vybava {
public function automat() {
return 'Ano';
}
}
class Automobilky extends Vybava {
public function __construct(){
$this->obj = new Skoda();
}
}
class Skoda extends Vybava {
public function __construct(){
echo $this->automat(); //Ano
}
}
class Bmw extends Vybava {
public function __construct(){
echo $this->automat(); //Ano
}
}
parent::automat();
class Vybava {
protected $db
public function __construct(){
$this->db = new PDO(...);
}
public function automat() {
return 'Ano';
}
}
:: - je operator a pristupuje se pres nej nejen ke static ale i ke konstatntam a overridden vlastnostem a metodam
v tomto vasem prikladu byste z konstruktoru dedicne tridy musel volat parent::__construct();pokud byste chtel pouzit
public function __construct(){
$this->db = new PDO(...);
}
pokud byste v dedicne tride nevytvoril konstruktor tak se pouzije ten rodice a nemusel byste ho volat pres parent ...
:: - je operator a pristupuje se pres nej nejen ke static ale i ke konstatntam a overridden vlastnostem a metodamHm, já myslel, že se metody volají jen "$this->nejakaMetoda()". A tu proměnnou zavlám jak? Rozdíl mezi $this->nejakaMetoda() a parent::nejakaMetoda() je prosím jaký? Díky moc.
class A {
public function nejakaMetoda(){
echo 'A';
}
}
class B extends A {
public function nejakaMetoda(){
echo 'B';
}
public function test(){
parent::nejakaMetoda();
$this->nejakaMetoda();
}
}
$tmp = new B();
$tmp->test();
parent můžete použít i přímo jméno té třídy. Proměnnou tak odkazovat nelze.
Místo parent můžete použít i přímo jméno té třídy.
Děkuji, tak že je jedno jestli to zavolám parent::myMetoda() nebo Vybava::myMetoda(), chápu to správně, jo?
Proměnnou tak odkazovat nelze.Pokud proměnnou takto volat nelze, tak to znamená, že se volá klasicky $this->db, ano? Díky
Automobilky dedila tridu Vybava. Moc mi to nedava smysl.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.