mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 08:47:52 +00:00
Merge pull request #258 from skipperbent/v3-fixes
Fixes and development
This commit is contained in:
@@ -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])) {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class SimpleRouter
|
|||||||
*/
|
*/
|
||||||
public static function start()
|
public static function start()
|
||||||
{
|
{
|
||||||
static::router()->routeRequest();
|
echo static::router()->routeRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user