Merge pull request #258 from skipperbent/v3-fixes

Fixes and development
This commit is contained in:
Simon Sessingø
2017-08-13 04:13:40 +02:00
committed by GitHub
5 changed files with 23 additions and 14 deletions
@@ -92,7 +92,7 @@ abstract class LoadableRoute extends Route implements ILoadableRoute
* Used when calling the url() helper. * Used when calling the url() helper.
* *
* @param string|null $method * @param string|null $method
* @param array|null $parameters * @param string|array|null $parameters
* @param string|null $name * @param string|null $name
* @return string * @return string
*/ */
@@ -123,7 +123,11 @@ abstract class LoadableRoute extends Route implements ILoadableRoute
for ($i = $max; $i >= 0; $i--) { for ($i = $max; $i >= 0; $i--) {
$param = $keys[$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 parameter is specifically set to null - use the original-defined value */
if ($value === null && isset($this->originalParameters[$param])) { if ($value === null && isset($this->originalParameters[$param])) {
+2 -4
View File
@@ -76,9 +76,7 @@ abstract class Route implements IRoute
if (is_callable($callback) === true) { if (is_callable($callback) === true) {
/* When the callback is a function */ /* When the callback is a function */
call_user_func_array($callback, $this->getParameters()); return call_user_func_array($callback, $this->getParameters());
return;
} }
@@ -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) protected function parseParameters($route, $url, $parameterRegex = null)
+8 -7
View File
@@ -248,9 +248,7 @@ class Router
if ($rewriteRoute !== null) { if ($rewriteRoute !== null) {
$rewriteRoute->loadMiddleware($this->request); $rewriteRoute->loadMiddleware($this->request);
$rewriteRoute->renderRoute($this->request); return $rewriteRoute->renderRoute($this->request);
return;
} }
/* If the request has changed */ /* If the request has changed */
@@ -267,7 +265,7 @@ class Router
/* Render route */ /* Render route */
$routeNotAllowed = false; $routeNotAllowed = false;
$this->request->setLoadedRoute($route); $this->request->setLoadedRoute($route);
$route->renderRoute($this->request); return $route->renderRoute($this->request);
break; break;
} }
@@ -295,6 +293,11 @@ class Router
} }
} }
/**
* @param \Exception $e
* @throws HttpException
* @throws \Exception
*/
protected function handleException(\Exception $e) protected function handleException(\Exception $e)
{ {
$url = ($this->request->getRewriteUrl() !== null) ? $this->request->getRewriteUrl() : $this->request->getUri(); $url = ($this->request->getRewriteUrl() !== null) ? $this->request->getRewriteUrl() : $this->request->getUri();
@@ -320,9 +323,7 @@ class Router
if ($rewriteRoute !== null) { if ($rewriteRoute !== null) {
$rewriteRoute->loadMiddleware($this->request); $rewriteRoute->loadMiddleware($this->request);
$rewriteRoute->renderRoute($this->request); return $rewriteRoute->renderRoute($this->request);
return;
} }
$rewriteUrl = $this->request->getRewriteUrl(); $rewriteUrl = $this->request->getRewriteUrl();
+1 -1
View File
@@ -49,7 +49,7 @@ class SimpleRouter
*/ */
public static function start() public static function start()
{ {
static::router()->routeRequest(); echo static::router()->routeRequest();
} }
/** /**
+6
View File
@@ -12,6 +12,9 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase
{ {
TestRouter::get('/', 'DummyController@method1'); TestRouter::get('/', 'DummyController@method1');
TestRouter::get('/page/{id?}', 'DummyController@method1'); TestRouter::get('/page/{id?}', 'DummyController@method1');
TestRouter::get('/test-output', function() {
return 'return value';
});
TestRouter::debugNoReset('/page/22', 'get'); TestRouter::debugNoReset('/page/22', 'get');
$this->assertEquals('/page/{id?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); $this->assertEquals('/page/{id?}/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl());
@@ -19,6 +22,9 @@ class RouterUrlTest extends PHPUnit_Framework_TestCase
TestRouter::debugNoReset('/', 'get'); TestRouter::debugNoReset('/', 'get');
$this->assertEquals('/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl()); $this->assertEquals('/', TestRouter::router()->getRequest()->getLoadedRoute()->getUrl());
$output = TestRouter::debugOutput('/test-output', 'get');
$this->assertEquals('return value', $output);
TestRouter::router()->reset(); TestRouter::router()->reset();
} }