lithium\net\http\Request::queryString PHP Method

queryString() public method

Get the full query string queryString.
public queryString ( array $params = [], string $format = null ) : string
$params array
$format string
return string
    public function queryString($params = array(), $format = null)
    {
        $result = array();
        $query = array();
        foreach (array_filter(array($this->query, $params)) as $querySet) {
            if (is_string($querySet)) {
                $result[] = $querySet;
                continue;
            }
            $query = array_merge($query, $querySet);
        }
        $query = array_filter($query);
        if ($format) {
            $q = null;
            foreach ($query as $key => $value) {
                if (!is_array($value)) {
                    $q .= String::insert($format, array('key' => urlencode($key), 'value' => urlencode($value)));
                    continue;
                }
                foreach ($value as $val) {
                    $q .= String::insert($format, array('key' => urlencode("{$key}[]"), 'value' => urlencode($val)));
                }
            }
            $result[] = substr($q, 0, -1);
        } else {
            $result[] = http_build_query($query);
        }
        $result = array_filter($result);
        return $result ? "?" . join("&", $result) : null;
    }

Usage Example

 public function testQueryParamsConstructed()
 {
     $url = "http://localhost/path/one.php?param=1&param=2";
     $config = parse_url($url);
     $request = new Request($config);
     $expected = "?param=1&param=2";
     $result = $request->queryString();
     $this->assertEqual($expected, $result);
     $expected = "?param=1&param=2&param3=3";
     $result = $request->queryString(array('param3' => 3));
     $this->assertEqual($expected, $result);
 }