Example #1
0
 /**
  * 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());
 }
Example #2
0
 /**
  * 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();
 }