Deprecate Client::pubSub() in favor of Client::pubSubLoop().

Client::pubSub() still works like usual by returning a new pub/sub
context, but it is now considered an alias of Client::pubSubLoop().

This change is necessary in preparation for the next major version
of Predis where Client::pubSub() will be used for the new PUBSUB
command introduced in Redis 2.8.
This commit is contained in:
Daniele Alessandri
2013-11-02 17:52:42 +01:00
parent d78e1b6ab7
commit 8533dbdb0b
4 changed files with 36 additions and 9 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ require 'SharedConfigurations.php';
$client = new Predis\Client($single_server + array('read_write_timeout' => 0));
// Initialize a new pubsub context
$pubsub = $client->pubSub();
$pubsub = $client->pubSubLoop();
// Subscribe to your channels
$pubsub->subscribe('control_channel', 'notifications');
+18 -1
View File
@@ -394,10 +394,27 @@ class Client implements ClientInterface
* Creates a new Publish / Subscribe context and returns it, or executes it
* inside the optionally provided callable object.
*
* @deprecated This method will change in the next major release to support
* the new PUBSUB command introduced in Redis 2.8. Please use
* Client::pubSubLoop() to create Predis\PubSub\PubSubContext
* instances from now on.
*
* @param mixed $arg,... Options for the context, a callable object, or both.
* @return MultiExecContext|array
* @return PubSubExecContext|array
*/
public function pubSub(/* arguments */)
{
return call_user_func_array(array($this, 'pubSubLoop'), func_get_args());
}
/**
* Creates a new Publish / Subscribe context and returns it, or executes it
* inside the optionally provided callable object.
*
* @param mixed $arg,... Options for the context, a callable object, or both.
* @return PubSubExecContext|array
*/
public function pubSubLoop(/* arguments */)
{
return $this->sharedInitializer(func_get_args(), 'initPubSub');
}
+1 -1
View File
@@ -33,7 +33,7 @@ class DispatcherLoop
public function __construct(ClientInterface $client)
{
$this->callbacks = array();
$this->pubSubContext = $client->pubSub();
$this->pubSubContext = $client->pubSubLoop();
}
/**
+16 -6
View File
@@ -584,24 +584,24 @@ class ClientTest extends StandardTestCase
/**
* @group disconnected
*/
public function testPubSubWithoutArgumentsReturnsPubSubContext()
public function testPubSubLoopWithoutArgumentsReturnsPubSubContext()
{
$client = new Client();
$this->assertInstanceOf('Predis\PubSub\PubSubContext', $pubsub = $client->pubSub());
$this->assertInstanceOf('Predis\PubSub\PubSubContext', $pubsub = $client->pubSubLoop());
}
/**
* @group disconnected
*/
public function testPubSubWithArrayReturnsPubSubContextWithOptions()
public function testPubSubLoopWithArrayReturnsPubSubContextWithOptions()
{
$connection = $this->getMock('Predis\Connection\SingleConnectionInterface');
$options = array('subscribe' => 'channel');
$client = new Client($connection);
$this->assertInstanceOf('Predis\PubSub\PubSubContext', $pubsub = $client->pubSub($options));
$this->assertInstanceOf('Predis\PubSub\PubSubContext', $pubsub = $client->pubSubLoop($options));
$reflection = new \ReflectionProperty($pubsub, 'options');
$reflection->setAccessible(true);
@@ -612,7 +612,7 @@ class ClientTest extends StandardTestCase
/**
* @group disconnected
*/
public function testPubSubWithArrayAndCallableExecutesPubSub()
public function testPubSubLoopWithArrayAndCallableExecutesPubSub()
{
// NOTE: we use a subscribe count of 0 in the fake message to trick
// the context and to make it think that it can be closed
@@ -631,7 +631,17 @@ class ClientTest extends StandardTestCase
->method('__invoke');
$client = new Client($connection);
$client->pubSub($options, $callable);
$client->pubSubLoop($options, $callable);
}
/**
* @group disconnected
*/
public function testPubSubIsAliasForPubSubLoop()
{
$client = new Client();
$this->assertInstanceOf('Predis\PubSub\PubSubContext', $client->pubSub());
}
/**