mirror of
https://github.com/predis/predis.git
synced 2026-09-14 20:37:29 +00:00
Add the ability to get a connection by alias from aggregated connections.
Previously it was possible to create a new instance of Predis\Client using the alias of a single connection in a cluster of connections. Now we added the ability to do this also when using master/slave replication.
This commit is contained in:
@@ -196,8 +196,8 @@ class Client
|
||||
public function getConnection($id = null)
|
||||
{
|
||||
if (isset($id)) {
|
||||
if (!Helpers::isCluster($this->connection)) {
|
||||
$message = 'Retrieving connections by alias is supported only with clustered connections';
|
||||
if (!Helpers::isAggregated($this->connection)) {
|
||||
$message = 'Retrieving connections by alias is supported only with aggregated connections (cluster or replication)';
|
||||
throw new NotSupportedException($message);
|
||||
}
|
||||
return $this->connection->getConnectionById($id);
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Predis;
|
||||
|
||||
use Predis\Network\IConnection;
|
||||
use Predis\Network\IConnectionCluster;
|
||||
use Predis\Network\IConnectionReplication;
|
||||
|
||||
/**
|
||||
* Defines a few helper methods.
|
||||
@@ -21,6 +22,17 @@ use Predis\Network\IConnectionCluster;
|
||||
*/
|
||||
class Helpers
|
||||
{
|
||||
/**
|
||||
* Checks if the specified connection represents an aggregation of connections.
|
||||
*
|
||||
* @param IConnection $connection Connection object.
|
||||
* @return Boolean
|
||||
*/
|
||||
public static function isAggregated(IConnection $connection)
|
||||
{
|
||||
return $connection instanceof IConnectionCluster || $connection instanceof IConnectionReplication;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the specified connection represents a cluster.
|
||||
*
|
||||
|
||||
@@ -385,7 +385,7 @@ class ClientTest extends StandardTestCase
|
||||
/**
|
||||
* @group disconnected
|
||||
* @expectedException Predis\NotSupportedException
|
||||
* @expectedExceptionMessage Retrieving connections by alias is supported only with clustered connections
|
||||
* @expectedExceptionMessage Retrieving connections by alias is supported only with aggregated connections (cluster or replication)
|
||||
*/
|
||||
public function testGetConnectionWithAliasWorksOnlyWithCluster()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user