-
Erick Hitter authoredErick Hitter authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
predis5.2.php 102.83 KiB
<?php
class PredisException extends Exception { }
// Client-side errors
class Predis_ClientException extends PredisException { }
// Aborted multi/exec
class Predis_AbortedMultiExec extends PredisException { }
// Server-side errors
class Predis_ServerException extends PredisException {
public function toResponseError() {
return new Predis_ResponseError($this->getMessage());
}
}
// Communication errors
class Predis_CommunicationException extends PredisException {
private $_connection;
public function __construct(Predis_Connection $connection, $message = null, $code = null) {
$this->_connection = $connection;
parent::__construct($message, $code);
}
public function getConnection() { return $this->_connection; }
public function shouldResetConnection() { return true; }
}
// Unexpected responses
class Predis_MalformedServerResponse extends Predis_CommunicationException { }
/* ------------------------------------------------------------------------- */
class Predis_Client {
const VERSION = '0.6.6';
private $_options, $_connection, $_serverProfile, $_responseReader;
public function __construct($parameters = null, $clientOptions = null) {
$this->setupClient($clientOptions !== null ? $clientOptions : new Predis_ClientOptions());
$this->setupConnection($parameters);
}
public static function create(/* arguments */) {
$argv = func_get_args();
$argc = func_num_args();
$options = null;
$lastArg = $argv[$argc-1];
if ($argc > 0 && !is_string($lastArg) && ($lastArg instanceof Predis_ClientOptions ||
is_subclass_of($lastArg, 'Predis_RedisServerProfile'))) {
$options = array_pop($argv);
$argc--;
}
if ($argc === 0) {
throw new Predis_ClientException('Missing connection parameters');
}
return new Predis_Client($argc === 1 ? $argv[0] : $argv, $options);
}
private static function filterClientOptions($options) {
if ($options instanceof Predis_ClientOptions) {
return $options;
}
if (is_array($options)) {
return new Predis_ClientOptions($options);
}
if ($options instanceof Predis_RedisServerProfile) {