/** * Attempt to resolve a route from a URL * * @param Request $request * * @return array|false */ public function resolve(Request $request) { foreach ($this->routes as $name => $route) { $options = $route['options']; $regex = $this->compileRegex($route['rule'], $options); $tokens = $this->compileTokens($route['rule']); $results = $this->compileResults($regex, $tokens, $request->getUri(), $options); if ($results !== false) { $payload = []; list($controller, $method) = explode('::', $route['action']); $payload['_controller'] = $controller; $payload['_method'] = $method; $payload['_route'] = $name; $payload = array_merge($results, $payload); return $payload; } } return false; }
use FuckingSmall\Http\RequestInterface; use FuckingSmall\Http\Request; use FuckingSmall\Http\ResponseInterface; use FuckingSmall\Http\Response; use FuckingSmall\Dispatching\RouterInterface; use FuckingSmall\Dispatching\Router; use FuckingSmall\Dispatching\DispatcherInterface; use FuckingSmall\Dispatching\Dispatcher; $container->alias(RequestInterface::class, Request::class, function () { /** * We want the Request object to be a singleton, so use a static variable to store it. */ static $request; if (null === $request) { $request = Request::createFromGlobals(); } return $request; })->alias(ResponseInterface::class, Response::class, function () { /** * We want the Response object to be a singleton, so use a static variable to store it. */ static $response; if (null === $response) { $response = new Response(); } return $response; })->alias(RouterInterface::class, Router::class, function () { /** * We want the Router object to be a singleton, so use a static variable to store it. */