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;
}