/home/suroeste/public_html/payments.transportessuroeste.com/src/Utils
Edit: /home/suroeste/public_html/payments.transportessuroeste.com/src/Utils/Router.php (2519B)
addRoute('GET', $path, $handler, $auth);
}
public function post(string $path, callable $handler, bool $auth = true): self
{
return $this->addRoute('POST', $path, $handler, $auth);
}
public function put(string $path, callable $handler, bool $auth = true): self
{
return $this->addRoute('PUT', $path, $handler, $auth);
}
public function delete(string $path, callable $handler, bool $auth = true): self
{
return $this->addRoute('DELETE', $path, $handler, $auth);
}
private function addRoute(string $method, string $path, callable $handler, bool $auth): self
{
$pattern = $this->pathToPattern($path);
$this->routes[] = [
'method' => $method,
'path' => $path,
'pattern' => $pattern,
'handler' => $handler,
'auth' => $auth
];
return $this;
}
public function addMiddleware(callable $middleware): self
{
$this->middlewares[] = $middleware;
return $this;
}
private function pathToPattern(string $path): string
{
$pattern = preg_replace('/\{([a-zA-Z_]+)\}/', '(?P<$1>[^/]+)', $path);
return '#^' . $pattern . '$#';
}
public function dispatch(string $method, string $uri): array
{
// Limpiar URI
$uri = parse_url($uri, PHP_URL_PATH);
$uri = '/' . trim($uri, '/');
// Buscar ruta
foreach ($this->routes as $route) {
if ($route['method'] !== $method) continue;
if (preg_match($route['pattern'], $uri, $matches)) {
$params = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY);
return [
'handler' => $route['handler'],
'params' => $params,
'auth' => $route['auth']
];
}
}
return ['handler' => null, 'params' => [], 'auth' => false];
}
public function getMiddlewares(): array
{
return $this->middlewares;
}
}