Autor | Zpráva | ||
---|---|---|---|
papoušek Profil * |
#1 · Zasláno: 16. 6. 2008, 14:25:26
Zdravím,
trochu jsem se zapletl do dědičnosti a potřeboval bych pomoct. Mám problém s následující situací. Trida1 { public static function getData() { ..... } public function main() { .... $data = self::getData(); .... } } Trida2 extends Trida1 { public static function getData() { ...nova deklarace zdedene metody... } } $a = new Trida2(); $a->main(); Potřeboval bych, aby když volám u instance tridy Trida2 metodu main(), se použila metoda getData s deklarací z třídy Trida2 a ne z třídy Trida1. Věděl bych, jak tuto situaci vyřešit třeba v Delphi (označil bych rodičovskou metodu klíčovým slovem virtual a nově deklarovanou metodu slovem override), tady si ale nevím rady. |
||
lordfrikk Profil |
#2 · Zasláno: 16. 6. 2008, 15:19:21 · Upravil/a: lordfrikk
|
||
lordfrikk Profil |
#3 · Zasláno: 16. 6. 2008, 15:26:47 · Upravil/a: lordfrikk
Pokud se nemýlím, tak v PHP se tato funkčnost nazývá Late Static Binding. Původně měla být dostupná v PHP 5.2, bohužel jak to vypadá, nejdříve bude v PHP6. Viz a viz a viz.
Pak by to mělo jít takto: Trida1 { public static function getData() { ..... } public function main() { .... $data = static::getData(); .... } } Trida2 extends Trida1 { public static function getData() { ...nova deklarace zdedene metody... } } $a = new Trida2(); $a->main(); |
||
papoušek Profil * |
#4 · Zasláno: 16. 6. 2008, 15:37:33
To je velké zklamání. Avšak děkuji za odpověď.
|
||
Časová prodleva: 16 let
|
0