Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
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.
     */