Dědění metod presenterů – jak na to?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lota
Člen | 38
+
0
-

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
+
0
-

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.

Lota
Člen | 38
+
0
-

Přišel jsem na to tak, že mi laděnka vypisuje: Call to undefined method Admin_ArticlePresenter::makeDate()

Zkouším metodu v Admin_BasePresenter volat z Admin_ArticlePresenter těmito zpusoby:

parent::makeDate();

nebo

$this->makeDate();
22
Člen | 1478
+
0
-

Dědit můžeš jen z jednoho předka, ale to sem vážně nepatří, takže hurá někam studovat základy OOP, než začneš s frameworkem.

<ot>delete</ot>

Lota
Člen | 38
+
0
-

Děkuji za cenné rady ;-)

duke
Člen | 650
+
0
-

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.

Lota
Člen | 38
+
0
-

No, tak už je to v pohodě. Chybu jsem tam vůbec neměl. Všechno to funguje. Jenom jsem editoval a spouštěl dva různé projekty.

Jdu na vzduch.