diff --git a/README.md b/README.md index 8a1bd96..7f7a8da 100644 --- a/README.md +++ b/README.md @@ -290,10 +290,10 @@ use Pecee\SimpleRouter\SimpleRouter; * * @param string|null $name * @param string|array|null $parameters - * @param array $getParams + * @param array|null $getParams * @return string */ -function url($name = null, $parameters = null, array $getParams = array()) { +function url($name = null, $parameters = null, $getParams = null) { SimpleRouter::getUrl($name, $parameters, $getParams); } diff --git a/src/Pecee/SimpleRouter/Router.php b/src/Pecee/SimpleRouter/Router.php index a5786e0..8b53d6d 100644 --- a/src/Pecee/SimpleRouter/Router.php +++ b/src/Pecee/SimpleRouter/Router.php @@ -384,14 +384,17 @@ class Router * @param array|null $getParams * @return string */ - public function getUrl($name = null, $parameters = null, $getParams = []) + public function getUrl($name = null, $parameters = null, $getParams = null) { if ($getParams !== null && is_array($getParams) === false) { throw new \InvalidArgumentException('Invalid type for getParams. Must be array or null'); } - if ($getParams === null) { + /* Only merge $_GET when all parameters are null */ + if ($name === null && $parameters === null && $getParams === null) { $getParams = $_GET; + } else { + $getParams = (array)$getParams; } /* Return current route if no options has been specified */ @@ -435,7 +438,8 @@ class Router } /* No result so we assume that someone is using a hardcoded url and join everything together. */ - return '/' . trim(join('/', array_merge((array)$name, (array)$parameters)), '/') . $this->arrayToParams($getParams); + $url = trim(join('/', array_merge((array)$name, (array)$parameters)), '/'); + return (($url === '') ? '/' : '/' . $url . '/') . $this->arrayToParams($getParams); } /** diff --git a/src/Pecee/SimpleRouter/SimpleRouter.php b/src/Pecee/SimpleRouter/SimpleRouter.php index e6b9fb6..cb9503e 100644 --- a/src/Pecee/SimpleRouter/SimpleRouter.php +++ b/src/Pecee/SimpleRouter/SimpleRouter.php @@ -311,7 +311,7 @@ class SimpleRouter * @param array|null $getParams * @return string */ - public static function getUrl($name = null, $parameters = null, $getParams = []) + public static function getUrl($name = null, $parameters = null, $getParams = null) { return static::router()->getUrl($name, $parameters, $getParams); }