/** * Internal function to register a new route. * Will bootstrap the router if necessary. * * @param string $pattern The regex pattern to match requests against (supports dynamic variables). * @param mixed|string $target The target function or path for the route. * @param array $requestMethods A list of acceptable request methods, leave empty to disable constraint. * @return Route The generated route. */ private function registerRoute($pattern, $target, array $requestMethods = []) { $this->bootstrapRouter(); $route = new Route($pattern, $target); if (!empty($requestMethods)) { $route->setAcceptableMethods($requestMethods); } $this->router->register($route); return $route; }
public function testRouteActionClosure() { $request = new Request(); $request->setRequestUri('/dir/sample.html'); $request->setMethod(RequestMethod::GET); $route = new Route('/dir/sample.html', function (Request $request) { // Our closure should receive our use variable ($request) // Our closure should also have access to the Context via $this echo $request->getMethod(); return 'test'; }); $route->setAcceptableMethods([RequestMethod::GET]); $context = new Context(); $context->registerInstance($request); $this->assertTrue($route->matches($request)); $this->expectOutputString('GET'); $this->assertEquals('test', $route->action($context)); }