浏览代码

Implement Predis\Client::getClientFor() to initialize a new client from a single connection of a cluster by its alias.

Daniele Alessandri 15 年之前
父节点
当前提交
1f663f06be
共有 1 个文件被更改,包括 20 次插入0 次删除
  1. 20 0
      lib/Predis.php

+ 20 - 0
lib/Predis.php

@@ -151,6 +151,26 @@ class Client {
         return $this->_responseReader;
     }
 
+    public function getClientFor($connectionAlias) {
+        if (!($this->_connection instanceof ConnectionCluster)) {
+            throw new ClientException(
+                'This method is supported only when the client is connected to a cluster of connections.'
+            );
+        }
+
+        $connection = $this->_connection->getConnectionById($connectionAlias);
+        if ($connection === null) {
+            throw new \InvalidArgumentException(
+                "Invalid connection alias: '$connectionAlias'."
+            );
+        }
+
+        $newClient = new Client();
+        $newClient->setupClient($this->_options);
+        $newClient->setConnection($this->getConnection($connectionAlias));
+        return $newClient;
+    }
+
     public function connect() {
         $this->_connection->connect();
     }