Dědění metod presenterů – jak na to?
- Lota
- Člen | 38
Můžete mi prosím poradit jak na dědičnost presenterů?
Mám takto poděděné presentery:
Admin_ArticlePresenter extends Admin_BasePresenter extends BasePresenter extends Presenter
V Admin_BasePresenter mám metodu:
public function makeDate($time) {
return //...vypocet...
}
Chci ji pak zavolat z Admin_ArticlePresenteru, bohužel nevím jak.
Toto nefunguje:
parent::makeDate($time);
Jde vůbec takto dědit? Poradíte mi jak? díky
- duke
- Člen | 650
Lota napsal(a):
Chci ji pak zavolat z Admin_ArticlePresenteru, bohužel nevím jak.Toto nefunguje:
parent::makeDate($time);
Jde vůbec takto dědit? Poradíte mi jak? díky
Jaks přišel na to, že toto nefunguje? Samozřejmě, že takto dědit lze.
Nicméně tvůj dotaz se netýká Nette, takže spíše patří na jiné fórum.
- duke
- Člen | 650
Oba způsoby musí fungovat. Nejspíš dědíš z něčeho jiného (co neobsahuje dotyčnou metodu), než si myslíš.
Jinak zápis:
parent::makeDate();
… používej jen pokud chceš obejít metodu v aktuálním objektu. Pokud v aktuálním objektu taková metoda není, použij:
$this->makeDate();
Také si nemyslím, že ty dva uvedené zápisy ti budou vyhazovat tutéž chybu. Chybu, kterou jsi uvedl, bych čekal jen v případě použití druhého zápisu a sice pokud daná metoda není definovaná ve zděděných třídách.