From f215eaa9cf615da4cab0e9c6d368419799c98d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sun, 1 Nov 2015 09:11:17 +0100 Subject: [PATCH 1/3] [BUGFIX] Bugfixes and optimisations - Fixed support for multiple middlewares using array. - Fixed match and parameters-match not not being merged when used on group. --- src/Pecee/SimpleRouter/RouterBase.php | 1 + src/Pecee/SimpleRouter/RouterEntry.php | 28 +++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Pecee/SimpleRouter/RouterBase.php b/src/Pecee/SimpleRouter/RouterBase.php index 8546a0d..9e88826 100644 --- a/src/Pecee/SimpleRouter/RouterBase.php +++ b/src/Pecee/SimpleRouter/RouterBase.php @@ -58,6 +58,7 @@ class RouterBase { $newPrefixes = $prefixes; $mergedSettings = array_merge($settings, $route->getMergeableSettings()); + if($route->getPrefix()) { array_push($newPrefixes, rtrim($route->getPrefix(), '/')); } diff --git a/src/Pecee/SimpleRouter/RouterEntry.php b/src/Pecee/SimpleRouter/RouterEntry.php index 4a73043..8dc7971 100644 --- a/src/Pecee/SimpleRouter/RouterEntry.php +++ b/src/Pecee/SimpleRouter/RouterEntry.php @@ -22,14 +22,12 @@ abstract class RouterEntry { protected $settings; protected $callback; protected $parameters; - protected $parametersRegex; - protected $regexMatch; public function __construct() { $this->settings = array(); $this->settings['requestMethods'] = array(); + $this->settings['parametersRegex'] = array(); $this->parameters = array(); - $this->parametersRegex = array(); } /** @@ -245,13 +243,25 @@ abstract class RouterEntry { public function loadMiddleware(Request $request) { if($this->getMiddleware()) { - $middleware = $this->loadClass($this->getMiddleware()); - if (!($middleware instanceof IMiddleware)) { - throw new RouterException($this->getMiddleware() . ' must be instance of Middleware'); - } + 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); + /* @var $class Middleware */ + $middleware->handle($request); + } + } else { + $middleware = $this->loadClass($this->getMiddleware()); + if (!($middleware instanceof IMiddleware)) { + throw new RouterException($this->getMiddleware() . ' must be instance of Middleware'); + } + + /* @var $class Middleware */ + $middleware->handle($request); + } } } From be277f276ffb756ae8f1a0cb14985c0d490b9272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sun, 1 Nov 2015 09:21:47 +0100 Subject: [PATCH 2/3] [FEATURE] Added support for patch. - Put now also allow patch request types. --- src/Pecee/SimpleRouter/RouterEntry.php | 4 +++- src/Pecee/SimpleRouter/SimpleRouter.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Pecee/SimpleRouter/RouterEntry.php b/src/Pecee/SimpleRouter/RouterEntry.php index 8dc7971..e38ac29 100644 --- a/src/Pecee/SimpleRouter/RouterEntry.php +++ b/src/Pecee/SimpleRouter/RouterEntry.php @@ -10,13 +10,15 @@ abstract class RouterEntry { const REQUEST_TYPE_POST = 'post'; const REQUEST_TYPE_GET = 'get'; const REQUEST_TYPE_PUT = 'put'; + const REQUEST_TYPE_PATCH = 'patch'; const REQUEST_TYPE_DELETE = 'delete'; public static $allowedRequestTypes = array( self::REQUEST_TYPE_DELETE, self::REQUEST_TYPE_GET, self::REQUEST_TYPE_POST, - self::REQUEST_TYPE_PUT + self::REQUEST_TYPE_PUT, + self::REQUEST_TYPE_PATCH ); protected $settings; diff --git a/src/Pecee/SimpleRouter/SimpleRouter.php b/src/Pecee/SimpleRouter/SimpleRouter.php index eb5c38d..537b324 100644 --- a/src/Pecee/SimpleRouter/SimpleRouter.php +++ b/src/Pecee/SimpleRouter/SimpleRouter.php @@ -57,7 +57,7 @@ class SimpleRouter { public static function put($url, $callback, array $settings = null) { $route = new RouterRoute($url, $callback); $route->addSettings($settings); - $route->setRequestMethods(array(RouterRoute::REQUEST_TYPE_PUT)); + $route->setRequestMethods(array(RouterRoute::REQUEST_TYPE_PUT, RouterRoute::REQUEST_TYPE_PATCH)); $router = RouterBase::getInstance(); $router->addRoute($route); From 3dd9dba029a514819517a648b47106994ea3d568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sun, 1 Nov 2015 10:13:00 +0100 Subject: [PATCH 3/3] [FEATURE] All headers in Request class now has lowercased keys. --- src/Pecee/Http/Request.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pecee/Http/Request.php b/src/Pecee/Http/Request.php index e4a9b59..3cf4abf 100644 --- a/src/Pecee/Http/Request.php +++ b/src/Pecee/Http/Request.php @@ -27,7 +27,7 @@ class Request { $this->host = $_SERVER['HTTP_HOST']; $this->uri = $_SERVER['REQUEST_URI']; $this->method = (isset($_POST['_method'])) ? strtolower($_POST['_method']) : strtolower($_SERVER['REQUEST_METHOD']); - $this->headers = getallheaders(); + $this->headers = array_change_key_case(getallheaders(), CASE_LOWER); } /** @@ -105,7 +105,7 @@ class Request { * @return string|null */ public function getHeader($name) { - return (isset($this->headers[$name])) ? $this->headers[$name] : null; + return (isset($this->headers[strtolower($name)])) ? $this->headers[strtolower($name)] : null; } /**