mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 19:12:13 +00:00
Merge pull request #664 from SunflowerFuchs/v5-development
Fixed Route::setUrl() behavior
This commit is contained in:
@@ -82,14 +82,16 @@ abstract class LoadableRoute extends Route implements ILoadableRoute
|
|||||||
{
|
{
|
||||||
$this->url = ($url === '/') ? '/' : '/' . trim($url, '/') . '/';
|
$this->url = ($url === '/') ? '/' : '/' . trim($url, '/') . '/';
|
||||||
|
|
||||||
|
$parameters = [];
|
||||||
if (strpos($this->url, $this->paramModifiers[0]) !== false) {
|
if (strpos($this->url, $this->paramModifiers[0]) !== false) {
|
||||||
|
|
||||||
$regex = sprintf(static::PARAMETERS_REGEX_FORMAT, $this->paramModifiers[0], $this->paramOptionalSymbol, $this->paramModifiers[1]);
|
$regex = sprintf(static::PARAMETERS_REGEX_FORMAT, $this->paramModifiers[0], $this->paramOptionalSymbol, $this->paramModifiers[1]);
|
||||||
|
|
||||||
if ((bool)preg_match_all('/' . $regex . '/u', $this->url, $matches) !== false) {
|
if ((bool)preg_match_all('/' . $regex . '/u', $this->url, $matches) !== false) {
|
||||||
$this->parameters = array_fill_keys($matches[1], null);
|
$parameters = array_fill_keys($matches[1], null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$this->parameters = $parameters;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Pecee\Http\Request;
|
||||||
|
|
||||||
|
class DummyLoadableRoute extends Pecee\SimpleRouter\Route\LoadableRoute {
|
||||||
|
|
||||||
|
public function matchRoute(string $url, Request $request): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'Dummy/Route/DummyLoadableRoute.php';
|
||||||
|
|
||||||
|
class LoadableRouteTest extends \PHPUnit\Framework\TestCase
|
||||||
|
{
|
||||||
|
public function testSetUrlUpdatesParameters()
|
||||||
|
{
|
||||||
|
$route = new DummyLoadableRoute();
|
||||||
|
$this->assertEmpty($route->getParameters());
|
||||||
|
|
||||||
|
$route->setUrl('/');
|
||||||
|
$this->assertEmpty($route->getParameters());
|
||||||
|
|
||||||
|
$expected = ['param' => null, 'optionalParam' => null];
|
||||||
|
$route->setUrl('/{param}/{optionalParam?}');
|
||||||
|
$this->assertEquals($expected, $route->getParameters());
|
||||||
|
|
||||||
|
$expected = ['otherParam' => null];
|
||||||
|
$route->setUrl('/{otherParam}');
|
||||||
|
$this->assertEquals($expected, $route->getParameters());
|
||||||
|
|
||||||
|
$expected = [];
|
||||||
|
$route->setUrl('/');
|
||||||
|
$this->assertEquals($expected, $route->getParameters());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user