mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 08:47:52 +00:00
Merge pull request #594 from redoonetworks/dymanic-domain
Dynamic domain, fixed Subdomain
This commit is contained in:
@@ -123,7 +123,8 @@ abstract class Route implements IRoute
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Ensures that host names/domains will work with parameters
|
// Ensures that host names/domains will work with parameters
|
||||||
$url = '/' . ltrim($url, '/');
|
|
||||||
|
if($route[0] == '{') $url = '/' . ltrim($url, '/');
|
||||||
$urlRegex = '';
|
$urlRegex = '';
|
||||||
$parameters = [];
|
$parameters = [];
|
||||||
|
|
||||||
@@ -131,7 +132,7 @@ abstract class Route implements IRoute
|
|||||||
$urlRegex = preg_quote($route, '/');
|
$urlRegex = preg_quote($route, '/');
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
foreach (preg_split('/((-?\/?){[^}]+})/', $route) as $key => $t) {
|
foreach (preg_split('/((\.?-?\/?){[^}]+})/', $route) as $key => $t) {
|
||||||
|
|
||||||
$regex = '';
|
$regex = '';
|
||||||
|
|
||||||
@@ -146,7 +147,7 @@ abstract class Route implements IRoute
|
|||||||
$regex = $parameterRegex ?? $this->defaultParameterRegex ?? static::PARAMETERS_DEFAULT_REGEX;
|
$regex = $parameterRegex ?? $this->defaultParameterRegex ?? static::PARAMETERS_DEFAULT_REGEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
$regex = sprintf('((\/|-)(?P<%2$s>%3$s))%1$s', $parameters[2][$key], $name, $regex);
|
$regex = sprintf('((\/|-|\.)(?P<%2$s>%3$s))%1$s', $parameters[2][$key], $name, $regex);
|
||||||
}
|
}
|
||||||
|
|
||||||
$urlRegex .= preg_quote($t, '/') . $regex;
|
$urlRegex .= preg_quote($t, '/') . $regex;
|
||||||
|
|||||||
@@ -175,6 +175,70 @@ class RouterRouteTest extends \PHPUnit\Framework\TestCase
|
|||||||
|
|
||||||
TestRouter::debug('/test', 'get');
|
TestRouter::debug('/test', 'get');
|
||||||
|
|
||||||
|
$this->assertFalse($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFixedSubdomainDynamicDomain()
|
||||||
|
{
|
||||||
|
TestRouter::request()->setHost('other.world.com');
|
||||||
|
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
TestRouter::group(['domain' => 'other.{domain}'], function () use (&$result) {
|
||||||
|
TestRouter::get('/test', function ($domain = null) use (&$result) {
|
||||||
|
|
||||||
|
$result = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
TestRouter::debug('/test', 'get');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFixedSubdomainDynamicDomainParameter()
|
||||||
|
{
|
||||||
|
TestRouter::request()->setHost('other.world.com');
|
||||||
|
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
TestRouter::group(['domain' => 'other.{domain}'], function () use (&$result) {
|
||||||
|
TestRouter::get('/test', 'DummyController@param');
|
||||||
|
TestRouter::get('/test/{key}', 'DummyController@param');
|
||||||
|
});
|
||||||
|
|
||||||
|
$response = TestRouter::debugOutputNoReset('/test', 'get');
|
||||||
|
|
||||||
|
$this->assertEquals('world.com', $response);
|
||||||
|
|
||||||
|
$response = TestRouter::debugOutput('/test/unittest', 'get');
|
||||||
|
|
||||||
|
$this->assertEquals('unittest, world.com', $response);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testWrongFixedSubdomainDynamicDomain()
|
||||||
|
{
|
||||||
|
TestRouter::request()->setHost('wrong.world.com');
|
||||||
|
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
TestRouter::group(['domain' => 'other.{domain}'], function () use (&$result) {
|
||||||
|
TestRouter::get('/test', function ($domain = null) use (&$result) {
|
||||||
|
|
||||||
|
$result = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
TestRouter::debug('/test', 'get');
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->assertFalse($result);
|
$this->assertFalse($result);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,4 +48,17 @@ class TestRouter extends \Pecee\SimpleRouter\SimpleRouter
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function debugOutputNoReset(string $testUrl, string $testMethod = 'get', bool $reset = true): string
|
||||||
|
{
|
||||||
|
$response = null;
|
||||||
|
|
||||||
|
// Route request
|
||||||
|
ob_start();
|
||||||
|
static::debugNoReset($testUrl, $testMethod, $reset);
|
||||||
|
$response = ob_get_clean();
|
||||||
|
|
||||||
|
// Return response
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user