5 Commits
1.0 ... 1.2

Author SHA1 Message Date
User
66893b670b 20240410#4 2024-04-10 02:37:25 +03:00
User
0af415b46b 20230926#3 2023-09-26 21:43:24 +03:00
User
5327c96bf1 20230926#3 2023-09-26 21:41:19 +03:00
User
8407b31894 20230626#2 2023-06-26 20:14:31 +03:00
User
9b88375743 20230626#1 2023-06-26 19:58:05 +03:00
3 changed files with 6 additions and 6 deletions

View File

@@ -17,5 +17,5 @@ composer require rmphp/router:"^1.0"
Dev version contains the latest changes Dev version contains the latest changes
```bash ```bash
composer require rmphp/router:"1.0.x-dev" composer require rmphp/router:"1.x-dev"
``` ```

View File

@@ -9,7 +9,7 @@
], ],
"require": { "require": {
"php": "^8.1", "php": "^8.1",
"rmphp/foundation": "^1.0" "rmphp/foundation": "^2.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@@ -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 должно строго ему соответствовать