From f668560a5a19cb07cdd6a2b48cc196ec7bead30e Mon Sep 17 00:00:00 2001 From: Daniele Alessandri Date: Sat, 5 Mar 2011 16:36:34 +0100 Subject: [PATCH] Implement ConnectionParameters::__toString(). --- lib/Predis/ConnectionParameters.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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; + } }