Instantiate the current class when subclassing Client.

Previously the getClientFor() method in a subclass of Predis\Client
returned an instance of Predis\Client instead of a new instance of
the subclass. The new behaviour is more correct.
This commit is contained in:
Daniele Alessandri
2012-12-24 14:32:59 +01:00
parent dcb4093046
commit 9901233fa1
3 changed files with 16 additions and 1 deletions
+3
View File
@@ -14,6 +14,9 @@ v0.8.1 (201x-xx-xx)
ignored when retrying to execute a Lua script by falling back to `EVAL` after
a `-NOSCRIPT` error (ISSUE #94).
- __FIX__: When subclassing Predis\Client, the `getClientFor()` method returns
a new instance of the subclass instead of a new instance of Predis\Client.
v0.8.0 (2012-10-23)
===============================================================================
+1 -1
View File
@@ -142,7 +142,7 @@ class Client implements ClientInterface
throw new \InvalidArgumentException("Invalid connection ID: '$connectionID'");
}
return new Client($connection, $this->options);
return new static($connection, $this->options);
}
/**
+12
View File
@@ -462,10 +462,22 @@ class ClientTest extends StandardTestCase
$clientNode02 = $client->getClientFor('node02');
$this->assertInstanceOf('Predis\Client', $clientNode02);
$this->assertSame($node02, $clientNode02->getConnection());
$this->assertSame($client->getOptions(), $clientNode02->getOptions());
}
/**
* @group disconnected
*/
public function testGetClientForReturnsInstanceOfSubclass()
{
$nodes = array('tcp://host1?alias=node01', 'tcp://host2?alias=node02');
$client = $this->getMock('Predis\Client', array('dummy'), array($nodes), 'SubclassedClient');
$this->assertInstanceOf('SubclassedClient', $client->getClientFor('node02'));
}
/**
* @group disconnected
*/