Autor | Zpráva | ||
---|---|---|---|
kzkcz Profil * |
#1 · Zasláno: 30. 12. 2014, 17:03:23
Zdravím,
řeším menší nepříjemnost. Určitě je to někdo chytrý, kdo mi řekne, že to nejde. :) Nebo třeba možná jde. Mám třídu A - rodič všech dalších tříd. abstract class A { public function init() { foreach( get_class_vars(get_class($this)) as $key => $null ) { if($key !== 'record') { $fnc = 'set' . ucfirst($key); $this->$fnc($this->record->$key); } } } } A pak další třídy, které jí dědí B,C. Pokud funkci umístím do B nebo C - funguje bezvadně. Z proměnné $this->record naseká data do jednotlivých metod setId() apod. Teď nastává ten problém -> nechci duplikovat kód do každého dítěte třídy A. Proto jsem ho vložil do třídy A (jak je vidět z kódu). Ale ejhle rodič neumí pracovat s metodami a proměnnými svého dítěte. :/ V podstatě chci tuhle univerzální funkci jen mít v rodiči a používat jí v dětech. Má to řešení? Nebo to nejde? |
||
Alphard Profil |
Jak to používáte? Mně se zdá vše v pořádku
abstract class A { public function init() { var_dump(get_class_vars(get_class($this))); } } class B extends A { public $storage; } $b = new B(); $b->init(); vypíše array(1) { ["storage"]=> NULL } Jen bych hned použil get_object_vars(). Teď jsem si uvědomil, že se takhle nedostanete na private členy, ale neměl by být problém použít protected .
|
||
kzkcz Profil * |
#3 · Zasláno: 30. 12. 2014, 20:04:05
Bože já jsem vážně kretén. :D
Díky! Mezi svátky ke konci šichty toho bylo asi moc na můj malý mozeček. Děkuji. Zítra vyzkouším. :) |
||
kzkcz Profil * |
#4 · Zasláno: 31. 12. 2014, 08:15:31
Samozřejmě vše funguje bez problémů. Školácká chyba. Ještě jednou díky.
|
||
Časová prodleva: 10 let
|
0