/** * Data which was added later overrides data which the same key */ public function testAddData() { $_SERVER['REQUEST_METHOD'] = Request::GET; $_GET = []; $_POST = []; $request = new Request(''); $request->addData(['foo' => 123]); $request->addData(['bar' => 456]); $request->addData(['bar' => 789]); $this->assertEquals(['foo' => 123, 'bar' => 789], $request->getData()); }
/** * Process the Request object and call the correct methods to display the response. * * @param Request $request * * @throws InvalidTypeException * @throws NotExistsException */ public function handleRequest(Request $request) { $router = $this->masterFactory->getHttpFactory()->getRouter(); $router->parseUrl($request->getUrl()); $request->addData($router->getQueryData()); $builder = $this->masterFactory->getHttpFactory()->getControllerBuilder($request, $router); $builder->build(); $controller = $builder->getController(); $action = $builder->getAction(); // Call action and get the response /** @var Response $response */ $response = call_user_func_array([$controller, Controller::HANDLE], [$action]); // Send headers if (headers_sent() === false) { header(sprintf('Status: %s', Response::getMessageForCode($response->getStatus()))); http_response_code($response->getStatus()); // Send headers foreach ($response->getHeaders() as $name => $value) { header("{$name}: {$value}", false); } } // Print the body echo $response->getBody(); }