diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index df4656f..7ea5210 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -92,7 +92,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute * Used when calling the url() helper. * * @param string|null $method - * @param array|null $parameters + * @param string|array|null $parameters * @param string|null $name * @return string */ @@ -123,7 +123,11 @@ abstract class LoadableRoute extends Route implements ILoadableRoute for ($i = $max; $i >= 0; $i--) { $param = $keys[$i]; - $value = $value = ($parameters !== null && array_key_exists($param, $parameters)) ? $parameters[$param] : $params[$param]; + + if($parameters !== null) { + $parameters = (array)$parameters; + $value = array_key_exists($param, $parameters) ? $parameters[$param] : $params[$param]; + } /* If parameter is specifically set to null - use the original-defined value */ if ($value === null && isset($this->originalParameters[$param])) { diff --git a/src/Pecee/SimpleRouter/Route/Route.php b/src/Pecee/SimpleRouter/Route/Route.php index b78d200..765515a 100644 --- a/src/Pecee/SimpleRouter/Route/Route.php +++ b/src/Pecee/SimpleRouter/Route/Route.php @@ -76,9 +76,7 @@ abstract class Route implements IRoute if (is_callable($callback) === true) { /* When the callback is a function */ - call_user_func_array($callback, $this->getParameters()); - - return; + return call_user_func_array($callback, $this->getParameters()); } @@ -106,7 +104,7 @@ abstract class Route implements IRoute }); } - call_user_func_array([$class, $method], $parameters); + return call_user_func_array([$class, $method], $parameters); } protected function parseParameters($route, $url, $parameterRegex = null) diff --git a/src/Pecee/SimpleRouter/Router.php b/src/Pecee/SimpleRouter/Router.php index 01f898e..9090d6a 100644 --- a/src/Pecee/SimpleRouter/Router.php +++ b/src/Pecee/SimpleRouter/Router.php @@ -248,9 +248,7 @@ class Router if ($rewriteRoute !== null) { $rewriteRoute->loadMiddleware($this->request); - $rewriteRoute->renderRoute($this->request); - - return; + return $rewriteRoute->renderRoute($this->request); } /* If the request has changed */ @@ -267,7 +265,7 @@ class Router /* Render route */ $routeNotAllowed = false; $this->request->setLoadedRoute($route); - $route->renderRoute($this->request); + return $route->renderRoute($this->request); break; } @@ -295,6 +293,11 @@ class Router } } + /** + * @param \Exception $e + * @throws HttpException + * @throws \Exception + */ protected function handleException(\Exception $e) { $url = ($this->request->getRewriteUrl() !== null) ? $this->request->getRewriteUrl() : $this->request->getUri(); @@ -320,9 +323,7 @@ class Router if ($rewriteRoute !== null) { $rewriteRoute->loadMiddleware($this->request); - $rewriteRoute->renderRoute($this->request); - - return; + return $rewriteRoute->renderRoute($this->request); } $rewriteUrl = $this->request->getRewriteUrl(); diff --git a/src/Pecee/SimpleRouter/SimpleRouter.php b/src/Pecee/SimpleRouter/SimpleRouter.php index dd804e5..84734d3 100644 --- a/src/Pecee/SimpleRouter/SimpleRouter.php +++ b/src/Pecee/SimpleRouter/SimpleRouter.php @@ -49,7 +49,7 @@ class SimpleRouter */ public static function start() { - static::router()->routeRequest(); + echo static::router()->routeRequest(); } /** diff --git a/test/RouterUrlTest.php b/test/RouterUrlTest.php index c3cc363..7135b22 100644 --- a/test/RouterUrlTest.php +++ b/test/RouterUrlTest.php @@ -12,6 +12,9 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase { TestRouter::get('/', 'DummyController@method1'); TestRouter::get('/page/{id?}', 'DummyController@method1'); + TestRouter::get('/test-output', function() { + return 'return value'; + }); TestRouter::debugNoReset('/page/22', 'get'); $this->assertEquals('/page/{id?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); @@ -19,6 +22,9 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase TestRouter::debugNoReset('/', 'get'); $this->assertEquals('/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); + $output = TestRouter::debugOutput('/test-output', 'get'); + $this->assertEquals('return value', $output); + TestRouter::router()->reset(); }