protected function createRequest($env) { $method = $env["REQUEST_METHOD"]; $uri = Uri::createFromEnvironment($env); $headers = Headers::createFromEnvironment($env); $cookies = Cookies::parseHeader($headers->get("Cookie", [])); $serverParams = $env->all(); $body = new Body(fopen("php://input", "r")); return new Request($method, $uri, $headers, $cookies, $serverParams, $body); }
protected function createRequest() { $env = (new Environment())->mock(["PATH_INFO" => "/index/hello/", "SCRIPT_NAME" => "/index.php"]); $method = $env["REQUEST_METHOD"]; $uri = Uri::createFromEnvironment($env); $headers = Headers::createFromEnvironment($env); $cookies = Cookies::parseHeader($headers->get("Cookie", [])); $serverParams = $env->all(); $body = new Body(fopen("php://input", "r")); return new Request($method, $uri, $headers, $cookies, $serverParams, $body); }
/** * @param array $serverParams * @return ServerRequest */ public function makeServerRequest(array $serverParams) { // I have no idea why I need to type hint here, but phpstorm is complaining /** @var $serverRequest ServerRequest */ $headers = Headers::createFromArray($serverParams); $cookies = Cookies::parseHeader($headers->get('Cookie', [])); $serverRequest = new ServerRequest($serverParams, $cookies); $serverRequest = $serverRequest->withMethod($serverParams['REQUEST_METHOD']); $serverRequest = $serverRequest->withUri(); foreach ($headers->all() as $header => $value) { $serverRequest = $serverRequest->withHeader($header, $value); } $serverRequest = $serverRequest->withUploadedFiles(UploadedFile::parseUploadedFiles($_FILES)); return $serverRequest; }
/** * Make request * * @param array $globals The $_SERVER super-global * @return \Psr\Http\Message\ServerRequestInterface */ public function makeRequest(array $globals) : ServerRequestInterface { $method = $globals['REQUEST_METHOD']; $uri = $this->makeUri($globals); $headers = $this->makeHeaders($globals); $cookies = Cookies::parseHeader($headers->get('Cookie', [])); $body = $this->makeBody(); $files = []; // TODO: Create factory method for uploaded files $request = new Request($method, $uri, $headers, $cookies, $globals, $body, $files); if ($method === 'POST' && in_array($request->getMediaType(), ['application/x-www-form-urlencoded', 'multipart/form-data'])) { // parsed body must be $_POST $request = $request->withParsedBody($_POST); } return $request; }
public static function fromGlobals(array $server = null, array $query = null, array $body = null, array $cookies = null, array $files = null) { $environment = new Environment($server); $method = $environment['REQUEST_METHOD']; $uri = Uri::createFromEnvironment($environment); $headers = Headers::createFromEnvironment($environment); $cookies = Cookies::parseHeader($headers->get('Cookie', [])); $serverParams = $environment->all(); $body = new RequestBody(); $uploadedFiles = UploadedFile::createFromEnvironment($environment); $request = new ServerRequest($method, $uri, $headers, $cookies, $serverParams, $body, $uploadedFiles); if ($method === 'POST' && in_array($request->getMediaType(), ['application/x-www-form-urlencoded', 'multipart/form-data'])) { // parsed body must be $_POST $request = $request->withParsedBody($_POST); } return $request; }
/** * Creates a new request object from the data of a reactPHP request object * * @param \React\Http\Request $request ReactPHP native request object * @param string $body Content of received call * * @return \Slim\Http\Request */ public static function createFromReactRequest(\React\Http\Request $request, $body = '') { $slimHeads = new Headers(); $cookies = []; $host = ['', 80]; foreach ($request->getHeaders() as $reactHeadKey => $reactHead) { $slimHeads->add($reactHeadKey, $reactHead); switch ($reactHeadKey) { case 'Host': $host = static::getHost($reactHead); break; case 'Cookie': $cookies = Cookies::parseHeader($reactHead); break; } } $slimUri = new Uri('http', $host[0], (int) $host[1], $request->getPath(), $request->getQuery()); $serverParams = $_SERVER; $serverParams['SERVER_PROTOCOL'] = 'HTTP/' . $request->getHttpVersion(); $slimBody = static::getBody($body); return new Request($request->getMethod(), $slimUri, $slimHeads, $cookies, $serverParams, $slimBody); }
public static function createFromGlobals(array $globals) { $env = new Collection($globals); $method = $env->get('REQUEST_METHOD'); $uri = Uri::createFromGlobals($globals); $headers = Headers::createFromGlobals($globals); $cookies = Cookies::parseHeader($headers->get('Cookie', [])); $serverParams = $globals; $body = new RequestBody(); $uploadedFiles = UploadedFile::createFromGlobals($globals); $request = new static($method, $uri, $headers, $cookies, $serverParams, $body, $uploadedFiles); if ($method === 'POST' && in_array($request->getMediaType(), ['application/x-www-form-urlencoded', 'multipart/form-data'])) { // parsed body must be $_POST $request = $request->withParsedBody($_POST); } return $request; }
$modelName = $c->get('model_name'); if ($modelName) { $modelFullName = 'App\\models\\' . $modelName; return new $modelFullName($c); } return false; }); // pagination $container['pagination'] = function ($c) { $settings = $c->get('settings')['pagination']; return new \App\lib\Pagination($settings['per_nums'], $settings['page_display_nums']); }; // cookie $container['cookie'] = function ($c) { $request = $c->get('request'); $parseCookies = \Slim\Http\Cookies::parseHeader($request->getHeader('cookie')); $cookie = new \Slim\Http\Cookies($parseCookies); return $cookie; }; // session $container['session'] = function ($c) { session_start(); return new \App\lib\Session(); }; // flash $container['flash'] = function ($c) { return new \App\lib\Flash($c['session']); }; // user $container['user'] = function ($c) { $user = ['id' => 0, 'name' => 'guest'];