funkce __call vyhodí onshutdown
- Berny
- Člen | 15
Zdravím,
Mám tu jeden problém u funkce __call.. Popíšu to v kódu, aby jsem se
pochopili..
class NewPresenter extends MainPresenter{
public $object;
function __construct(){
$this->object = $this->requireFile(); // Vytvoří novou třídu z jiného souboru
}
function __call($method, $args){
print_r($method); // Vyhodí vždycky funkci onshutdown
}
}
A moje otázka zní, jestli jde nějak udělat, abych mohl z jiné třídy volat šablony, komponenty apod.(kromě extends)??
Děkuji za odpovědi..
- jiri.pudil
- Nette Blogger | 1032
OnShutdown je událost, kterou se presenter pokouší vyvolat na konci svého
běhu nebo v případě přerušení. (Běžně si to obsluhuje Nette\Object,
jenže ty mu přepisuješ metodu __call()
. Uvnitř té metody bys
měl v každém případě postoupit obsluhu výše:
parent::__call($method, $args)
.)
A moje otázka zní, jestli jde nějak udělat, abych mohl z jiné třídy volat šablony, komponenty apod.(kromě extends)??
Nerozumím. Čeho chceš přesně dosáhnout?
- jiri.pudil
- Nette Blogger | 1032
Ad render: Pokud potřebuješ vykreslit jinou šablonu, použij setView pro view v aktuálním presenteru, popř. forward pro akci jiného presenteru.
Ad komponenty: Pořád nevím, čeho chceš docílit. Zkus popsat konkrétní use case. Ale stejně si myslím, že není nejmenší důvod to takhle znásilňovat. Komponenta koneckonců je jiná třída; jestli potřebuješ stejnou komponentu použít ve více presenterech, dej si její továrničku do nějakého BasePresenteru.
Editoval jiri.pudil (10. 5. 2013 15:18)