url = trim($url, '/');; } public function setBasePath(string $basePath) { $pos = strpos($this->url, $basePath); if ($pos !== false) { $this->url = substr($this->url, $pos + strlen($basePath)); } var_dump($this->url); } public function get(string $path, callable $callable): self { return $this->addRoute('GET', $path, $callable); } private function addRoute(string $method, string $path, $callable): self { $route = new Route($path, $callable); $this->routes[$method][] = $route; return $this; } public function run(DI $di): HttpResponse { if (!isset($this->routes[$_SERVER['REQUEST_METHOD']])) { throw new RouteNotFoundException('Unknown HTTP method'); } foreach ($this->routes[$_SERVER['REQUEST_METHOD']] as $route) { if ($route->matches($this->url)) { return $route->call($di); } } throw new RouteNotFoundException('No matching routes'); } }