Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Petr Kučera 2 22. 11. 2013, 12:05:17
-
Ahoj nevidí prosím někdo chybu? Ve třídě Data nemůžu získat proměnnou $obj z rodičovské třídy Config(); Díky za pomoc
class Data extends Config{
var_dump($this->obj); //NULL - Proč tam není objekt???
}
class Config{
protected $obj;
protected function __construct(){
$this->obj = new Common();
}
}
class ASD extends Config{
public function __construct(){
parent::__construct();
$this->getData();
}
public function getData(){
new Data();
}
}
-
Nechybí ti dát
var_dump($this->obj); //NULL - Proč tam není objekt???
do nějaké metody v té třídě?
-
taky myslim ze volat funkci v definici tridy nema vyznam.
-
Skus toto:
class Config{
protected private $obj;
-
nebude to mícháním protected a public při dědení konstruktoru? myslím, že od nějaké minulé verze PHP platí, že konstruktory musí mít při dědění stejnou definici (lovím z hlavy, tak mně kdyžtak nekamanujte).
-
v triede "Data" nemate ziadny konstruktor - zavola php interpreter v takom pripade autoamticky konstruktor rodica (t.j. konstruktor triedy "Config"), v ktorom naplnate premennu $obj ?
-
Sorry za diakritiku, pisu z mobilu. pokud data od te tridy dedi, pak ano.
-
mam takovej pocit, ze v php se musi konstruktor rodice zavolat explicitne...
-
este otazka:
ta metoda "var_dump" sa vola priamo v tele triedy "Data" - neznamena to, ze sa vola este pred konstruktorom (a teda aj konstruktorom rodica)?
(asi davam hlupe otazky, ale php som uz par rokov nevidel)
-
mam takovej pocit, ze v php se musi konstruktor rodice zavolat explicitne...
Pokud máš v zděděné třídě konstruktor, tak ano. Jinak by to byla celkem blbost a nefungovalo by to (i když v případě PHP už mě nepřekvapí snad nic).
-
este otazka:
ta metoda "var_dump" sa vola priamo v tele triedy "Data" - neznamena to, ze sa vola este pred konstruktorom (a teda aj konstruktorom rodica)?
(asi davam hlupe otazky, ale php som uz par rokov nevidel)
var_dump je funkce primo z php. podle se nema v tomhle pripade kdy zavolat. trida je jen definice. volani tohohle var_dump si lita ve vesmiru a nikdy se nepotka se zadnou metodou te tridy.
-
upresneni: ..se nepotka s volanim jakekoliv metody nad jakymkoliv objektem teto tridy.