82 lines
2.4 KiB
PHP
82 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Subcon\Zap\Routing;
|
|
|
|
class Repository
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
private array $routes;
|
|
|
|
/**
|
|
* RoutingRepository constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->routes = [];
|
|
}
|
|
|
|
/**
|
|
* Register a new route.
|
|
*
|
|
* @param string $pattern The uri pattern to match
|
|
* @param array|string $methods One or more HTTP methods to match
|
|
* @param string|array|callable $callback A callback to run if this route is called
|
|
* @param array $middlewares List of extra middlewares to run for this route
|
|
* @return void
|
|
*/
|
|
public function register(string $pattern, array|string $methods, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$route = new Route($pattern, $methods, $callback, $middlewares);
|
|
|
|
foreach($route->getMethods() as $method) {
|
|
$this->routes[$method][] = $route;
|
|
}
|
|
}
|
|
|
|
public function get(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'GET', $callback, $middlewares);
|
|
}
|
|
|
|
public function post(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'POST', $callback, $middlewares);
|
|
}
|
|
|
|
public function put(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'PUT', $callback, $middlewares);
|
|
}
|
|
|
|
public function delete(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'DELETE', $callback, $middlewares);
|
|
}
|
|
|
|
public function options(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'OPTIONS', $callback, $middlewares);
|
|
}
|
|
|
|
public function patch(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'PATCH', $callback, $middlewares);
|
|
}
|
|
|
|
public function head(string $pattern, string|array|callable $callback, array $middlewares = []): void
|
|
{
|
|
$this->register($pattern, 'HEAD', $callback, $middlewares);
|
|
}
|
|
|
|
/**
|
|
* Get the list of registered routes.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getRoutes(): array
|
|
{
|
|
return $this->routes;
|
|
}
|
|
} |