Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Petr Kučera 2 22. 11. 2013, 12:05:17

Název: Proměnná v extends class v PHP
Přispěvatel: 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

Kód: [Vybrat]
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();
   }
}
Název: Re:Proměnná v extends class v PHP
Přispěvatel: Tomáš Glabasňa 22. 11. 2013, 13:40:06
Nechybí ti dát
var_dump($this->obj); //NULL - Proč tam není objekt???
do nějaké metody v té třídě?
Název: Re:Proměnná v extends class v PHP
Přispěvatel: to_je_jedno 22. 11. 2013, 13:45:33
taky myslim ze volat funkci v definici tridy nema vyznam.
Název: Re:Proměnná v extends class v PHP
Přispěvatel: Jozef 22. 11. 2013, 14:00:09
Skus toto:
class Config{
   protected private $obj;
Název: Re:Proměnná v extends class v PHP
Přispěvatel: Nikeš 22. 11. 2013, 14:01:09
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).
Název: Re:Proměnná v extends class v PHP
Přispěvatel: bob 22. 11. 2013, 14:06:10
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 ?
Název: Re:Proměnná v extends class v PHP
Přispěvatel: eMko 22. 11. 2013, 14:24:43
Sorry za diakritiku, pisu z mobilu. pokud data od te tridy dedi, pak ano.
Název: Re:Proměnná v extends class v PHP
Přispěvatel: Ziktofel 22. 11. 2013, 14:28:57
mam takovej pocit, ze v php se musi konstruktor rodice zavolat explicitne...
Název: Re:Proměnná v extends class v PHP
Přispěvatel: bob 22. 11. 2013, 16:22:06
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)
Název: Re:Proměnná v extends class v PHP
Přispěvatel: eMko 22. 11. 2013, 17:49:54
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).
Název: Re:Proměnná v extends class v PHP
Přispěvatel: to_je_jedno 22. 11. 2013, 19:42:23
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.
Název: Re:Proměnná v extends class v PHP
Přispěvatel: to_je_jedno 22. 11. 2013, 19:43:21
upresneni: ..se nepotka s volanim jakekoliv metody nad jakymkoliv objektem teto tridy.