From a2c7a5eb88ba82488ed4dd18b761029d154350ed Mon Sep 17 00:00:00 2001 From: Phil Date: Wed, 31 Dec 2014 15:11:15 +0000 Subject: [PATCH 1/3] Fixed readme syntax error --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 969cf17..e4fdf43 100644 --- a/README.md +++ b/README.md @@ -53,10 +53,10 @@ WellRESTed's primary goal is to facilitate mapping of URIs to classes that will // Build the router. $myRouter = new Router(); $myRouter->addRoutes(array( - new StaticRoute("/", "\\myapi\\Handlers\\RootHandler")), - new StaticRoute("/cats/", "\\myapi\\Handlers\\CatCollectionHandler")), - new TemplateRoute("/cats/{id}/", "\\myapi\\Handlers\\CatItemHandler")) -); + new StaticRoute("/", "\\myapi\\Handlers\\RootHandler"), + new StaticRoute("/cats/", "\\myapi\\Handlers\\CatCollectionHandler"), + new TemplateRoute("/cats/{id}/", "\\myapi\\Handlers\\CatItemHandler") +)); $myRouter->respond(); ``` From cc17ebbe484cef61e74fadaa0817ba6f70efcc1b Mon Sep 17 00:00:00 2001 From: Phil Date: Wed, 31 Dec 2014 21:06:06 +0000 Subject: [PATCH 2/3] Added support for custom error handlers --- src/pjdietz/WellRESTed/Router.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/pjdietz/WellRESTed/Router.php b/src/pjdietz/WellRESTed/Router.php index 34bd164..aaf6cc7 100644 --- a/src/pjdietz/WellRESTed/Router.php +++ b/src/pjdietz/WellRESTed/Router.php @@ -23,6 +23,8 @@ class Router implements HandlerInterface { /** @var array Array of Route objects */ private $routes; + /** @var array Array of Route objects for error handling. */ + private $errorHandlers; /** Create a new Router. */ public function __construct() @@ -73,6 +75,29 @@ class Router implements HandlerInterface } } + /** + * Add a custom error handler. + * + * @param integer $error The error code. + * @param HandlerInterface $errorHandler The handler for the error. + */ + public function addErrorHandler($error, $errorHandler) + { + $this->errorHandlers[$error] = $errorHandler; + } + + /** + * Add custom error handlers. + * + * @param array $errorHandlers An array mapping an integer error code to something implementing an HandlerInterface. + */ + public function addErrorHandlers(array $errorHandlers) + { + foreach ($errorHandlers as $error => $errorHandler) { + $this->addErrorHandler($error, $errorHandler); + } + } + /** * Dispatch the singleton Request through the router and output the response. * @@ -85,6 +110,11 @@ class Router implements HandlerInterface if (!$response) { $response = $this->getNoRouteResponse($request); } + $status = $response->getStatusCode(); + if (array_key_exists($status, $this->errorHandlers)) { + $errorHandler = new $this->errorHandlers[$status](); + $response = $errorHandler->getResponse($request, $args); + } $response->respond(); } From 07c55bb70b754c6ca1ac01458c23628e040d0893 Mon Sep 17 00:00:00 2001 From: Phil Date: Wed, 31 Dec 2014 21:12:29 +0000 Subject: [PATCH 3/3] no error handlers case --- src/pjdietz/WellRESTed/Router.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pjdietz/WellRESTed/Router.php b/src/pjdietz/WellRESTed/Router.php index aaf6cc7..a3d5fc2 100644 --- a/src/pjdietz/WellRESTed/Router.php +++ b/src/pjdietz/WellRESTed/Router.php @@ -30,6 +30,7 @@ class Router implements HandlerInterface public function __construct() { $this->routes = array(); + $this->errorHandlers = array(); } /**