diff --git a/lib/Predis/ConnectionParameters.php b/lib/Predis/ConnectionParameters.php index a6446191..485bfb6c 100644 --- a/lib/Predis/ConnectionParameters.php +++ b/lib/Predis/ConnectionParameters.php @@ -83,6 +83,7 @@ class ConnectionParameters { $query = explode('&', $parsed['query']); $parsed = array_reduce($query, 'self::paramsExtractor', $parsed); } + unset($parsed['query']); return $this->filter($parsed); } @@ -118,4 +119,25 @@ class ConnectionParameters { $value = $this->tryInitializeValue($parameter); return isset($value); } + + public function __toString() { + $str = null; + if ($this->scheme === 'unix') { + $str = "{$this->scheme}://{$this->path}"; + } + else { + $str = "{$this->scheme}://{$this->host}:{$this->port}"; + } + + $query = array(); + $reject = array('scheme', 'host', 'port', 'password', 'path'); + foreach ($this->_parameters as $k => $v) { + if (in_array($k, $reject) || $v === null) { + continue; + } + $v = $v === false ? '0' : $v; + $query[] = $k . '=' . ($v === false ? '0' : $v); + } + return count($query) > 0 ? ($str . '/?' . implode('&', $query)) : $str; + } }