StdObj
Produkt
Produkt_extendent
dziedziczą jeden po drugim.
i teraz taka sytuacja - chcę zwrócić listę w pełni wypełnionych obektów z bazy
<?php class Produkt extends StdObiekt{ protected $produkt_id = -1; protected $produkt_nazwa = -1; protected $produkt_dostepnosc_id = -1; protected $produkt_typ_id = -1; public function __construct($param = null){ parent::__construct($param); } $this -> set('produkt_nazwa', $t_prod['produkt_nazwa']); $this -> set('produkt_data_dodania', $t_prod['produkt_data_dodania']); $this -> set('produkt_dostepnosc_id', $t_prod['produkt_dostepnosc_id']); } public function dbPobierz($id = null){ $sql = 'SELECT * FROM produkt '.$sql_id; $t_produkt = getAssoc($sql); $this -> __construct_from_assoc($produkt); return true; } } class Produkt_ext extends Produkt{ public $Produkt_ext_id = -1; public $Produkt_ext_nazwa = -1; public $Produkt_ext_opis = null; public $Produkt_ext_xml = null; public $czy_jest_zestawem = 0; public function __construct($param = null){ parent::__construct($param); } $this -> set('produkt_id', $t_param['produkt_id']); $this -> set('Produkt_ext_id', $t_param['Produkt_ext_id']); $this -> set('Produkt_ext_nazwa', $t_param['Produkt_ext_nazwa']); $this -> set('Produkt_ext_opis', $t_param['Produkt_ext_opis']); $this -> set('Produkt_ext_xml', $t_param['Produkt_ext_xml']); } public function dbPobierz($id = null){ $sql = 'SELECT * FROM Produkt_ext '.$sql_id; $t_Produkt_ext = getAssoc($sql); $this -> __construct_from_assoc($Produkt_ext); parent::dbPobierz($this->produkt_id); if($this -> czy_jest_zestawem) $this -> pobierzElementyZestawu(); return true; } } ?>
no i jedziemy z koksem:
<?php prod_ex = New Produkt_extendent(); prod_ex -> dbPobierz('1'); ?>
No i jest dupa - bo w metodzie Produkt_ext -> dbPobierz() wywołuję parent::dbPobierz($this->produkt_id); a w dbPobierz() już nie wykonuje się __construct_from_assoc() z Produkt - tylko z Produkt_ext.
Nie mogę wrzucić do $Produkt->dbPobierz() zamiast $this -> __construct_from_assoc($produkt); dać parent no bo to nie logiczne i przestanie mi działać....
No any way.... to jakaś lipa....
W skrócie jeszcze raz
W poziomu Produkt_ext wywołuję parent::dbPobierz. W ciele klasy Produkt jest wywoływana metoda __construct_from_assoc (ale Produkt_ext też ma metodę __construct_from_assoc) no i wywołuje się ta z Produkt_ext a nie z Produkt.
Jakaś rada??