Fixes and development

- `$parameter` argument in `findUrl` method now supports both string,
array and null value to avoid confusion.

- Using return value in callbacks now displays value (issue: #257)
This commit is contained in:
Simon Sessingø
2017-08-13 03:06:27 +01:00
parent 6aa38cfa4c
commit 74187ee326
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.
*
* @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])) {
+2 -4
View File
@@ -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)
+8 -7
View File
@@ -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();
+1 -1
View File
@@ -49,7 +49,7 @@ class SimpleRouter
*/
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('/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();
}