/** * Create a new request with the given URL, method and data. * * @param string $url * @param string $method [optional] * @param array $data [optional] * @param Session $session [optional] * @return Request */ public static function create($url, $method = 'GET', $data = array(), Session $session = null) { $components = static::parseUrl($url); $data = static::prepareData($data); $data['get'] = array_merge($data['get'], static::parseQuery($components['query'])); if ($components['host']) { $data['server']['http_host'] = $components['host']; $data['server']['server_name'] = $components['host']; } if ($components['path']) { $data['server']['path_info'] = $components['path']; $data['server']['request_uri'] = $components['path']; } $data['server']['request_method'] = strtoupper($method); if ($components['query']) { $data['server']['request_uri'] .= '?' . $components['query']; } $request = new Request($data['get'], $data['post'], $data['cookie'], $data['file'], $data['server'], $data['header']); $request->setSession($session); return $request; }