|
|
|
@@ -12,10 +12,10 @@ class Router implements RouterInterface {
|
|
|
|
private string $startPoint = "/";
|
|
|
|
private string $startPoint = "/";
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @param string $startPoint
|
|
|
|
* @param string $mountPoint
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public function setStartPoint(string $startPoint): void {
|
|
|
|
public function setStartPoint(string $mountPoint): void {
|
|
|
|
$this->startPoint = $startPoint;
|
|
|
|
$this->startPoint = $mountPoint;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
@@ -29,11 +29,11 @@ class Router implements RouterInterface {
|
|
|
|
if (!isset($rulesNode['key'], $rulesNode['routes'])) continue;
|
|
|
|
if (!isset($rulesNode['key'], $rulesNode['routes'])) continue;
|
|
|
|
// преобразуем псевдомаску в реальную маску
|
|
|
|
// преобразуем псевдомаску в реальную маску
|
|
|
|
// заменяем алиасы на регвыражения
|
|
|
|
// заменяем алиасы на регвыражения
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9]+?):@any>'", "(?P<$1>.*)", $rulesNode['key']);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9_]+?):@any>'", "(?P<$1>.*)", $rulesNode['key']);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9]+?):@num>'", "(?P<$1>[0-9]+)", $realPattern);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9_]+?):@num>'", "(?P<$1>[0-9]+)", $realPattern);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9]+?):@path>'", "(?P<$1>[^/]+)", $realPattern);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9_]+?):@path>'", "(?P<$1>[^/]+)", $realPattern);
|
|
|
|
// поддерживаем свободное регулярное выражение в псевдомаске
|
|
|
|
// поддерживаем свободное регулярное выражение в псевдомаске
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9]+?):(.+?)>'", "(?P<$1>$2)", $realPattern);
|
|
|
|
$realPattern = preg_replace("'<([A-z0-9_]+?):(.+?)>'", "(?P<$1>$2)", $realPattern);
|
|
|
|
// заменяем алиасы на регвыражения
|
|
|
|
// заменяем алиасы на регвыражения
|
|
|
|
$realPattern = str_replace(["<@any>", "<@num>", "<@path>"], [".*", "[0-9]+", "[^/]+"], $realPattern);
|
|
|
|
$realPattern = str_replace(["<@any>", "<@num>", "<@path>"], [".*", "[0-9]+", "[^/]+"], $realPattern);
|
|
|
|
// при наличии слеша в конце правила url должно строго ему соответствовать
|
|
|
|
// при наличии слеша в конце правила url должно строго ему соответствовать
|
|
|
|
|