[BUGFIX] Bugfixes and optimisations

- Fixed support for multiple middlewares using array.
- Fixed match and parameters-match not not being merged when used on group.
This commit is contained in:
Simon Sessingø
2015-11-01 09:11:17 +01:00
parent b3f8910cab
commit f215eaa9cf
2 changed files with 20 additions and 9 deletions
+1
View File
@@ -58,6 +58,7 @@ class RouterBase {
$newPrefixes = $prefixes; $newPrefixes = $prefixes;
$mergedSettings = array_merge($settings, $route->getMergeableSettings()); $mergedSettings = array_merge($settings, $route->getMergeableSettings());
if($route->getPrefix()) { if($route->getPrefix()) {
array_push($newPrefixes, rtrim($route->getPrefix(), '/')); array_push($newPrefixes, rtrim($route->getPrefix(), '/'));
} }
+13 -3
View File
@@ -22,14 +22,12 @@ abstract class RouterEntry {
protected $settings; protected $settings;
protected $callback; protected $callback;
protected $parameters; protected $parameters;
protected $parametersRegex;
protected $regexMatch;
public function __construct() { public function __construct() {
$this->settings = array(); $this->settings = array();
$this->settings['requestMethods'] = array(); $this->settings['requestMethods'] = array();
$this->settings['parametersRegex'] = array();
$this->parameters = array(); $this->parameters = array();
$this->parametersRegex = array();
} }
/** /**
@@ -245,6 +243,17 @@ abstract class RouterEntry {
public function loadMiddleware(Request $request) { public function loadMiddleware(Request $request) {
if($this->getMiddleware()) { if($this->getMiddleware()) {
if(is_array($this->getMiddleware())) {
foreach($this->getMiddleware() as $middleware) {
$middleware = $this->loadClass($middleware);
if (!($middleware instanceof IMiddleware)) {
throw new RouterException($middleware . ' must be instance of Middleware');
}
/* @var $class Middleware */
$middleware->handle($request);
}
} else {
$middleware = $this->loadClass($this->getMiddleware()); $middleware = $this->loadClass($this->getMiddleware());
if (!($middleware instanceof IMiddleware)) { if (!($middleware instanceof IMiddleware)) {
throw new RouterException($this->getMiddleware() . ' must be instance of Middleware'); throw new RouterException($this->getMiddleware() . ' must be instance of Middleware');
@@ -254,6 +263,7 @@ abstract class RouterEntry {
$middleware->handle($request); $middleware->handle($request);
} }
} }
}
public function renderRoute(Request $request) { public function renderRoute(Request $request) {