Source for file MultiRouter.php
Documentation is available at MultiRouter.php
6: * @copyright Copyright (c) 2004, 2010 David Grudl
7: * @license http://nettephp.com/license Nette license
8: * @link http://nettephp.com
10: * @package Nette\Application
18: * @copyright Copyright (c) 2004, 2010 David Grudl
19: * @package Nette\Application
24: private $cachedRoutes;
30: parent::__construct(NULL, 'IRouter');
36: * Maps HTTP request to a PresenterRequest object.
37: * @param IHttpRequest
38: * @return PresenterRequest|NULL
40: public function match(IHttpRequest $httpRequest)
42: foreach ($this as $route) {
43: $appRequest =
$route->match($httpRequest);
44: if ($appRequest !==
NULL) {
54: * Constructs absolute URL from PresenterRequest object.
55: * @param IHttpRequest
56: * @param PresenterRequest
57: * @return string|NULL
59: public function constructUrl(PresenterRequest $appRequest, IHttpRequest $httpRequest)
61: if ($this->cachedRoutes ===
NULL) {
63: $routes['*'] =
array();
65: foreach ($this as $route) {
66: $presenter =
$route instanceof
Route ?
$route->getTargetPresenter() :
NULL;
68: if ($presenter ===
FALSE) continue;
72: if (!isset($routes[$presenter])) {
73: $routes[$presenter] =
$routes['*'];
75: $routes[$presenter][] =
$route;
78: foreach ($routes as $id =>
$foo) {
79: $routes[$id][] =
$route;
84: $this->cachedRoutes =
$routes;
88: if (!isset($this->cachedRoutes[$presenter])) $presenter =
'*';
90: foreach ($this->cachedRoutes[$presenter] as $route) {
91: $uri =
$route->constructUrl($appRequest, $httpRequest);