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; } /** 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..e38ac29 100644 --- a/src/Pecee/SimpleRouter/RouterEntry.php +++ b/src/Pecee/SimpleRouter/RouterEntry.php @@ -10,26 +10,26 @@ 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; 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 +245,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); + } } } 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);