/** * Makes the instance of Es\Http\Uri. * * @param array $server Optional; null by default or empty array means * global $_SERVER. The source data * * @return \Es\Http\Uri The instance of Uri */ public static function make(array $server = null) { $scheme = UriSchemeFactory::make($server); $host = UriHostFactory::make($server); $port = UriPortFactory::make($server); $path = UriPathFactory::make($server); $query = UriQueryFactory::make($server); $url = ''; if ($host) { $url .= $scheme . '://' . $host . ':' . $port; $path = '/' . ltrim($path, '/'); } $url .= $path; if ($query) { $url .= '?' . $query; } $uri = new Uri($url); if ($host) { return $uri; } return $uri->withScheme($scheme)->withPort($port); }
public function testMakeReturnsQueryFromGlobalServer() { $_SERVER = ['REQUEST_URI' => '/foo?bar=baz&con=cop']; $this->assertSame('bar=baz&con=cop', UriQueryFactory::make()); }