Chybějící metoda MultiRouter::clear()

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

Po odstranění Collections surně postrádám metodu MultiRouter::clear();

Možná implementace:

<?php
public function clear()
{
	$this->routes = new \SplQueue(); // převzato z konstruktoru
}
?>
David Grudl
Nette Core | 8169
+
0
-

Stačí workaround?

foreach ($router as $key => $foo) unset($router[$key]);
pekelnik
Člen | 462
+
0
-

Nu což o to… stačí :)

U routeru vítám odstranění SplQueue. Ale když už jsme u toho – hodil by se také setter na ten $router->list…

Bez toho je dost těžké router kešovat…

David Grudl
Nette Core | 8169
+
0
-

Tam už vůbec list není, MultiRouter je list sám o sobě. Takže ho kešuj jako celek.

Mimochodem, zkoušel jsi měřit, jestli kešování routerů přináší nějaký efekt? Dle mých měření je to zbytečné.

pekelnik
Člen | 462
+
0
-

@david: To záleží na tom kolik rout mám a jak dlouho trvá je sestavit.

Mně se to při ~200ms bez keše (včetně několika málo databázových dotazů) oproti ~10ms (a žádnému dotazu) vyplatí.

Router má asi 20 relativně „složitých“ rout.