buildString($this->getArrayCopy()); } /** * * Sets values from a query string; overwrites any previous values. * * To set from an array, use `exchangeArray()`. * * @param string $spec The query string to use; for example, * `foo=bar&baz=dib`. * * @return void * */ public function setFromString($spec) { parse_str($spec, $query); $this->exchangeArray($query); } /** * * Build string from an array * * @param array $array * * @param string $prefix Defaults to null * * @return string Returns a string */ protected function buildString(array $array, $prefix = null) { $elem = []; foreach ($array as $key => $val) { $key = ($prefix) ? $prefix . '[' . $key . ']' : $key; if (is_array($val)) { $elem[] = $this->buildString($val, $key); } else { $val = ($val === null || $val === false) ? '' : rawurlencode($val); $elem[] = rawurlencode($key) . '=' . $val; } } return implode('&', $elem); } }