router

Форк
0
/
Router.php 
32 строки · 788.0 Байт
1
<?php declare(strict_types=1);
2

3
namespace Upside\Router;
4

5
use Upside\Std\Option;
6
use function Upside\Std\None;
7
use function Upside\Std\Some;
8

9
final class Router implements RouterInterface
10
{
11
    private RouteCollector $route_collector;
12

13
    public function __construct(RouteCollector $route_collector)
14
    {
15
        $this->route_collector = $route_collector;
16
    }
17

18
    /**
19
     * @return Option<Matched>
20
     */
21
    public function match(string $path): Option
22
    {
23
        foreach ($this->route_collector->routes() as $route) {
24
            $matches = [];
25
            if (\preg_match($route->pattern, $path, $matches)) {
26
                return Some(new Matched($route, \array_filter($matches, 'is_string', \ARRAY_FILTER_USE_KEY)));
27
            }
28
        }
29

30
        return None();
31
    }
32
}
33

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.