Example #1
0
 /**
  * @param Event $event
  * @param Request $request
  * @param Route $route
  * @return Request
  */
 function __invoke(Event $event, Request $request, Route $route)
 {
     if (!preg_match('(\\G' . $route->regex() . ')', $request->path(), $match, null, $request->length())) {
         return null;
     }
     $request[Arg::CONTROLLER] = $route->controller();
     $request[Arg::LENGTH] = $request->length() + strlen($match[0]);
     $request[Arg::MATCHED] = $request->length() == strlen($request->path());
     $request[Arg::PARAMS] = $this->params($match, $route->defaults() + $request->params());
     return $request->matched() || $route->children() && $event->stop() ? $request : null;
 }