router

Форк
0
/
RouteCollector.php 
99 строк · 2.4 Кб
1
<?php declare(strict_types=1);
2

3
namespace Upside\Router;
4

5
final class RouteCollector implements RouteCollectorInterface
6
{
7
    /**
8
     * @var Route[]
9
     */
10
    private array $routes = [];
11

12
    /**
13
     * @param class-string $controller
14
     */
15
    public function add_route(string $path, string $controller, string $action, string $method, string $name): void
16
    {
17
        $this->route(new Route($path, $controller, $action, $method, $name));
18
    }
19

20
    /**
21
     * @param class-string $controller
22
     */
23
    #[\Override]
24
    public function get(string $path, string $controller, string $action, string $name): void
25
    {
26
        $this->add_route($path, $controller, $action, 'GET', $name);
27
    }
28

29
    /**
30
     * @param class-string $controller
31
     */
32
    #[\Override]
33
    public function post(string $path, string $controller, string $action, string $name): void
34
    {
35
        $this->add_route($path, $controller, $action, 'POST', $name);
36
    }
37

38
    /**
39
     * @param class-string $controller
40
     */
41
    #[\Override]
42
    public function put(string $path, string $controller, string $action, string $name): void
43
    {
44
        $this->add_route($path, $controller, $action, 'PUT', $name);
45
    }
46

47
    /**
48
     * @param class-string $controller
49
     */
50
    #[\Override]
51
    public function delete(string $path, string $controller, string $action, string $name): void
52
    {
53
        $this->add_route($path, $controller, $action, 'DELETE', $name);
54
    }
55

56
    /**
57
     * @param class-string $controller
58
     */
59
    #[\Override]
60
    public function patch(string $path, string $controller, string $action, string $name): void
61
    {
62
        $this->add_route($path, $controller, $action, 'PATCH', $name);
63
    }
64

65
    /**
66
     * @param class-string $controller
67
     */
68
    #[\Override]
69
    public function head(string $path, string $controller, string $action, string $name): void
70
    {
71
        $this->add_route($path, $controller, $action, 'HEAD', $name);
72
    }
73

74
    /**
75
     * @param class-string $controller
76
     */
77
    #[\Override]
78
    public function options(string $path, string $controller, string $action, string $name): void
79
    {
80
        $this->add_route($path, $controller, $action, 'OPTIONS', $name);
81
    }
82

83
    #[\Override]
84
    public function route(Route $route): self
85
    {
86
        $this->routes[$route->name] = $route;
87

88
        return $this;
89
    }
90

91
    /**
92
     * @return Route[]
93
     */
94
    #[\Override]
95
    public function routes(): array
96
    {
97
        return $this->routes;
98
    }
99
}
100

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

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

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

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