Accept the 'scheme' argument for Predis\ConnectionParameters. The 'redis' scheme is now an alias of 'tcp' for compatibility with older versions of Predis.

This commit is contained in:
Daniele Alessandri
2010-06-10 11:19:14 +02:00
parent 72c41a25cb
commit a2c9cb38a5
+16 -2
View File
@@ -986,6 +986,7 @@ class PubSubContext implements \Iterator {
/* ------------------------------------------------------------------------- */
class ConnectionParameters {
const DEFAULT_SCHEME = 'tcp';
const DEFAULT_HOST = '127.0.0.1';
const DEFAULT_PORT = 6379;
const DEFAULT_TIMEOUT = 5;
@@ -1001,7 +1002,7 @@ class ConnectionParameters {
private static function parseURI($uri) {
$parsed = @parse_url($uri);
if ($parsed == false || $parsed['scheme'] != 'redis' || $parsed['host'] == null) {
if ($parsed == false || $parsed['host'] == null) {
throw new ClientException("Invalid URI: $uri");
}
@@ -1047,7 +1048,13 @@ class ConnectionParameters {
}
private static function filterConnectionParams($parameters) {
// for compatibility with older versions of Predis
if (isset($parameters['scheme']) && $parameters['scheme'] === 'redis') {
$parameters['scheme'] = 'tcp';
}
return array(
'scheme' => self::getParamOrDefault($parameters, 'scheme', self::DEFAULT_SCHEME),
'host' => self::getParamOrDefault($parameters, 'host', self::DEFAULT_HOST),
'port' => (int) self::getParamOrDefault($parameters, 'port', self::DEFAULT_PORT),
'database' => self::getParamOrDefault($parameters, 'database'),
@@ -1087,7 +1094,7 @@ class TcpConnection implements IConnectionSingle {
private $_params, $_socket, $_initCmds, $_reader;
public function __construct(ConnectionParameters $parameters, ResponseReader $reader = null) {
$this->_params = $parameters;
$this->_params = $this->checkParameters($parameters);
$this->_initCmds = array();
$this->_reader = $reader ?: new ResponseReader();
}
@@ -1098,6 +1105,13 @@ class TcpConnection implements IConnectionSingle {
}
}
private function checkParameters(ConnectionParameters $parameters) {
if ($parameters->scheme != 'tcp') {
throw new \InvalidArgumentException("Invalid scheme: {$parameters->scheme}");
}
return $parameters;
}
public function isConnected() {
return is_resource($this->_socket);
}