Proměnná v extends class v PHP

Petr Kučera 2

Proměnná v extends class v PHP
« kdy: 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();
   }
}
« Poslední změna: 22. 11. 2013, 13:35:41 od Petr Krčmář »


Re:Proměnná v extends class v PHP
« Odpověď #1 kdy: 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ě?

Re:Proměnná v extends class v PHP
« Odpověď #2 kdy: 22. 11. 2013, 13:45:33 »
taky myslim ze volat funkci v definici tridy nema vyznam.
Děkuji za možnost editace příspěvku.

Jozef

Re:Proměnná v extends class v PHP
« Odpověď #3 kdy: 22. 11. 2013, 14:00:09 »
Skus toto:
class Config{
   protected private $obj;

Nikeš

Re:Proměnná v extends class v PHP
« Odpověď #4 kdy: 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).


bob

Re:Proměnná v extends class v PHP
« Odpověď #5 kdy: 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 ?

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Proměnná v extends class v PHP
« Odpověď #6 kdy: 22. 11. 2013, 14:24:43 »
Sorry za diakritiku, pisu z mobilu. pokud data od te tridy dedi, pak ano.

Re:Proměnná v extends class v PHP
« Odpověď #7 kdy: 22. 11. 2013, 14:28:57 »
mam takovej pocit, ze v php se musi konstruktor rodice zavolat explicitne...

bob

Re:Proměnná v extends class v PHP
« Odpověď #8 kdy: 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)

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Proměnná v extends class v PHP
« Odpověď #9 kdy: 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).

Re:Proměnná v extends class v PHP
« Odpověď #10 kdy: 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.
Děkuji za možnost editace příspěvku.

Re:Proměnná v extends class v PHP
« Odpověď #11 kdy: 22. 11. 2013, 19:43:21 »
upresneni: ..se nepotka s volanim jakekoliv metody nad jakymkoliv objektem teto tridy.
Děkuji za možnost editace příspěvku.