/** * Request constructor. * * Array of handlers for HTTP methods may look like this: * $methodHandlers = [ * methodHandlerObject, * anotherMethodHandlerObject * ]; * * @param StreamInterface $stream Object which contains incoming stream. * @param UriInterface $uri Object which contains URI parts. * @param UploadedFileInterface $uploadedFile UploadedFile instance. * @param array $methodHandlers Handlers for HTTP methods. */ public function __construct(StreamInterface $stream, UriInterface $uri, UploadedFileInterface $uploadedFile, array $methodHandlers) { // Message construct. parent::__construct(); // Store UploadedFile instance. $this->uploadedFile = $uploadedFile; // Store Stream instance. $this->stream = $stream->createStream('php://input', 'rb'); // Server environment. $this->serverEnv = $this->normalizeServer($_SERVER); // Headers. $this->headers = $this->normalizeHeaders($this->serverEnv); // URI. $this->uri = $this->createUriFromGlobals($uri); // HTTP real method. $this->realMethod = strtoupper($this->getFromServer('REQUEST_METHOD')); // HTTP replaced method (by html form input field '_method'). $this->replacedMethod = strtoupper(strtoupper($this->input('_method'))); // Cookie if present. $this->cookies = isset($_COOKIE) ? $_COOKIE : []; // Get params if present. $this->queryParams = isset($_GET) ? $_GET : []; // processing incoming HTTP requests by methods: // POST, PUT, PATCH, DELETE if ($this->getMethod() !== 'GET') { // register HTTP methods handlers $this->registerMethodHandler($methodHandlers); // notification of all handlers of this incoming request $requestBody = $this->notify($this); // get parsed body (if exists) from handler $this->parsedBody = $requestBody['parsedBody']; // get uploaded files (if exists) from handler if (!empty($requestBody['uploadedFiles'])) { $this->uploadedFiles = $this->normalizeUploadedFiles($requestBody['uploadedFiles']); } } }
/** * Request constructor. * * Example: $request = new Request(new Stream('php://input', 'rb'), new Uri());. * * @param StreamInterface $stream * @param UriInterface $uri */ public function __construct(StreamInterface $stream, UriInterface $uri) { parent::__construct(); // Server environment. $this->serverEnv = $this->normalizeServer($_SERVER); // Headers. $this->headers = $this->normalizeHeaders($this->serverEnv); // URI. $this->uri = $this->createUriFromGlobals($uri); // Row stream. $this->stream = $stream; // HTTP real method. $this->realMethod = $this->getFromServer('REQUEST_METHOD'); // Parsed body. $this->parsedBody = $this->handleBody(); // HTTP replaced method (by html form input field '_method'). $this->replacedMethod = strtoupper($this->input('_method')); // Get params if present. $this->queryParams = isset($_GET) ? $_GET : []; // Cookie if present. $this->cookies = isset($_COOKIE) ? $_COOKIE : []; // Uploaded files if present. $this->uploadedFiles = isset($_FILES) ? $this->normalizeUploadedFiles($_FILES) : []; }