Události – onStartup, onNewRequest, …
- pheidrich
- Člen | 11
Už to bude nějaký ten pátek, co mě PHP tak naštvalo, že jsem s ním rezolutně skoncoval… Tuším, že se psal rok 2002 a verze 4.3 byla na spadnutí (ze židle) :)
Po očku jsem ale poslední dobou pokukoval po Nette a nakonec jsem se ho přecejen rozhodl prozkoumat. Samozřejmě čumím jak puk, a tak bych byl rád, kdyby mi někdo pomohl vysvětlit pár nejasností.
Jde mi o události a callback jejich handlerů – konkrétně v Application.php na řádku 133:
130: try {
131: if (!$request) {
132: // Routing
133: $this->onStartup($this);
134:
135: $request = $router->match($httpRequest);
136: if (!($request instanceof ....
Uměl by mi, prosím, někdo polopaticky vysvětlit, co se ve skutečnosti zavolá? Chápu, že se událost vyvolá, ale nechápu, co ji v tomto případě zpracuje…
Díky.
Pavel
- pmg
- Člen | 372
Ahoj Pavle,
napřed aplikace pomocí routeru zjistí, na jaký presenter požadavek směřuje, a následně u něj v několika fázích volá různé metody.
Doporučuji se kouknout na příklady v distribuci, popř. prostudovat životní cyklus aplikace.
Víťa
- David Grudl
- Nette Core | 8218
Jde o vlastnost Nette\Object, kdy mohu do
pole $this->onXyz
přidávat „callbacky“ a poté je
hromadně zavolat přes $this->onXyz($arg, ...)
.
Příklad:
$application->onStartup[] = 'myfunc';
$application->onStartup[] = array($object, 'method');
$application->onStartup(TRUE, 123); // volá myfunc(TRUE, 123) a $object->method(TRUE, 123);
- pheidrich
- Člen | 11
Díky, Object::__call($name, $args)
a lambda funkce
jsem si pročítal už včera, ale v hlavě se mi to rozleželo až přes
noc… ;-)
Jdu prozkoumat, kde přesně si vlastně Presenter ty handlery registruje.
p.s.: Davide, ty pracuješ – teda spíš odpovídáš na blbé dotazy – už ve 4:44 ráno? :-)