refactoring.

This commit is contained in:
Taylor Otwell 2011-10-24 23:24:06 -05:00
parent a6d487ecd4
commit bd6695844e
1 changed files with 11 additions and 25 deletions

View File

@ -2,13 +2,6 @@
class Redis { class Redis {
/**
* The active Redis connections.
*
* @var array
*/
protected static $connections = array();
/** /**
* The name of the Redis connection. * The name of the Redis connection.
* *
@ -28,7 +21,7 @@ class Redis {
* *
* @var resource * @var resource
*/ */
protected $connection; protected static $connection;
/** /**
* Create a new Redis connection instance. * Create a new Redis connection instance.
@ -58,28 +51,21 @@ public static function make($name, $config)
/** /**
* Create a new Redis connection instance. * Create a new Redis connection instance.
* *
* Redis connections are managed as singletons, so if the connection has * The Redis connection is managed as a singleton, so if the connection has
* already been established, that same connection instance will be returned * already been established, that same connection instance will be returned
* on subsequent requests for the connection. * on subsequent requests for the connection.
* *
* @param string $connection * @param string $connection
* @return Redis * @return Redis
*/ */
public static function connection($name) public static function connection()
{ {
if ( ! array_key_exists($name, static::$connections)) if (is_null(static::$connection))
{ {
$config = Config::get("database.redis.{$name}"); static::$connection = static::make($name, Config::get('database.redis'))->connect();
if (is_null($config))
{
throw new \Exception("Redis connection [$name] has not been configured.");
}
static::$connections[$name] = static::make($name, $config)->connect();
} }
return static::$connections[$name]; return static::$connection;
} }
/** /**
@ -91,9 +77,9 @@ public static function connection($name)
*/ */
public function connect() public function connect()
{ {
$this->connection = @fsockopen($this->config['host'], $this->config['port'], $error, $message); static::$connection = @fsockopen($this->config['host'], $this->config['port'], $error, $message);
if ($this->connection === false) if (static::$connection === false)
{ {
throw new \Exception("Error establishing Redis connection [{$this->name}]: {$error} - {$message}"); throw new \Exception("Error establishing Redis connection [{$this->name}]: {$error} - {$message}");
} }
@ -110,9 +96,9 @@ public function connect()
*/ */
public function run($method, $parameters) public function run($method, $parameters)
{ {
fwrite($this->connection, $this->command($method, $parameters)); fwrite(static::$connection, $this->command($method, $parameters));
$reply = trim(fgets($this->connection, 512)); $reply = trim(fgets(static::$connection, 512));
} }
/** /**
@ -149,7 +135,7 @@ public function __call($method, $parameters)
*/ */
public function __destruct() public function __destruct()
{ {
fclose($this->connection); fclose(static::$connection);
} }
} }