diff --git a/BETA b/BETA index acd5f87f..165a1e1e 100644 --- a/BETA +++ b/BETA @@ -1,10 +1,10 @@ *** PLEASE READ *** -The library code in this branch is the result of a major rewrite of Predis 0.6 -and is considered of BETA quality, which means that there should not be any -known outstanding bug and that the internal API is almost finalized and fixed +The library code in this branch is the result of a major rewrite of Predis 0.6 +and is considered of BETA quality, which means that there should not be any +known outstanding bug and that the internal API is almost finalized and fixed (but it could still be subject to slight changes if needed). -Feedback is obviously appreciated and even if things should just work, use it -at your own risk! If you need to use Predis in a production environment please +Feedback is obviously appreciated and even if things should just work, use it +at your own risk! If you need to use Predis in a production environment please use a tagged release or checkout the version-0.6 branch from the repository. diff --git a/CHANGELOG b/CHANGELOG index 081d4819..71741126 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,13 +3,13 @@ v0.7.0 (2010-xx-xx) * List of the methods removed in this release: - Predis\Client::create() - This method has been removed because it was considered redundant + This method has been removed because it was considered redundant with Predis\Client::__construct() since Predis 0.6.0. - Predis\Client::pipelineSafe() - This method was deprecated in Predis 0.6.1 and now it has been finally + This method was deprecated in Predis 0.6.1 and now it has been finally removed. Use Predis\Client::pipeline(array('safe' => true)). - Predis\Client::rawCommand() - This method was removed due to interface inconsistencies with the + This method was removed due to interface inconsistencies with the underlying connection class used internally by the client instance. - Predis\Client::setProfile() This method is no more part of the public API and has been made private. @@ -17,30 +17,30 @@ v0.7.0 (2010-xx-xx) * Predis now includes its own autoloader. To use it, include Autoloader.php and call Predis\Autoloader::register(). - * The Predis\MultiBulkCommand class has been merged into Predis\Command and - thus removed. If you have code that extends Predis\MultiBulkCommand but - you can not afford to update your code, you can always implement it again + * The Predis\MultiBulkCommand class has been merged into Predis\Command and + thus removed. If you have code that extends Predis\MultiBulkCommand but + you can not afford to update your code, you can always implement it again as an abstract class simply by extending Predis\Command. - * The Predis\IConnection interface has been splitted in two different new + * The Predis\IConnection interface has been splitted in two different new interfaces: Predis\IConnectionSingle and Predis\IConnectionCluster. - * Developers can now register their own classes that implements the - Predis\IConnectionSingle interface to handle different URI schemes such as - 'tcp', 'unix', 'udp' or anything else. Everything is handled by the new + * Developers can now register their own classes that implements the + Predis\IConnectionSingle interface to handle different URI schemes such as + 'tcp', 'unix', 'udp' or anything else. Everything is handled by the new Predis\ConnectionFactory class. - * Added support for UNIX domain sockets (supported by Redis 2.2) with the new + * Added support for UNIX domain sockets (supported by Redis 2.2) with the new Predis\UnixDomainSocketConnection class and the 'unix' scheme. - * Added the new Predis\ICommand interface. The Predis\Command class now + * Added the new Predis\ICommand interface. The Predis\Command class now implements this interface that is used in the core bits of Predis. - * Implicit extraction of arguments when the only argument passed to a - multibulk command is an array is not supported anymore and must be done + * Implicit extraction of arguments when the only argument passed to a + multibulk command is an array is not supported anymore and must be done explicitly inside Predis\Command::filterArguments(). - * It is now possible to pass instances of Predis\ConnectionParameters and + * It is now possible to pass instances of Predis\ConnectionParameters and Predis\IConnection as parameters of Predis\Client::__construct(). v0.6.5 (2011-02-12) @@ -49,14 +49,14 @@ v0.6.5 (2011-02-12) desynchronization errors (ISSUE #20). v0.6.4 (2011-02-12) - * Various performance improvements (15% ~ 25%) especially when dealing with + * Various performance improvements (15% ~ 25%) especially when dealing with long multibulk replies or when using clustered connections. - * Added the "on_retry" option to Predis\MultiExecBlock that can be used to - specify an external callback (or any callable object) that gets invoked + * Added the "on_retry" option to Predis\MultiExecBlock that can be used to + specify an external callback (or any callable object) that gets invoked whenever a transaction is aborted by the server. - * Added inline (p)subscribtion via options when initializing an instance of + * Added inline (p)subscribtion via options when initializing an instance of Predis\PubSubContext. v0.6.3 (2011-01-01) @@ -64,10 +64,10 @@ v0.6.3 (2011-01-01) - Strings: SETRANGE, GETRANGE, SETBIT, GETBIT - Lists : BRPOPLPUSH - * The abstraction for MULTI/EXEC transactions has been dramatically improved - by providing support for check-and-set (CAS) operations when using Redis >= - 2.2. Aborted transactions can also be optionally replayed in automatic up - to a user-defined number of times, after which a Predis\AbortedMultiExec + * The abstraction for MULTI/EXEC transactions has been dramatically improved + by providing support for check-and-set (CAS) operations when using Redis >= + 2.2. Aborted transactions can also be optionally replayed in automatic up + to a user-defined number of times, after which a Predis\AbortedMultiExec exception is thrown. v0.6.2 (2010-11-28) @@ -79,17 +79,17 @@ v0.6.2 (2010-11-28) - ZSets : ZREVRANGEBYSCORE - Misc. : PERSIST - * WATCH also accepts a single array parameter with the keys that should be + * WATCH also accepts a single array parameter with the keys that should be monitored during a transaction. * Improved the behaviour of Predis\MultiExecBlock in certain corner cases. * Improved parameters checking for the SORT command. - * FIX: the STORE parameter for the SORT command didn't work correctly when + * FIX: the STORE parameter for the SORT command didn't work correctly when using '0' as the target key (ISSUE #13). - * FIX: the methods for UNWATCH and DISCARD do not break anymore method + * FIX: the methods for UNWATCH and DISCARD do not break anymore method chaining with Predis\MultiExecBlock. v0.6.1 (2010-07-11) @@ -98,147 +98,147 @@ v0.6.1 (2010-07-11) * New commands available in the Redis v2.2 profile (dev): - Misc. : WATCH, UNWATCH - * Optional modifiers for ZRANGE, ZREVRANGE and ZRANGEBYSCORE queries are - supported using an associative array passed as the last argument of their + * Optional modifiers for ZRANGE, ZREVRANGE and ZRANGEBYSCORE queries are + supported using an associative array passed as the last argument of their respective methods. - * The LIMIT modifier for ZRANGEBYSCORE can be specified using either: + * The LIMIT modifier for ZRANGEBYSCORE can be specified using either: - an indexed array: array($offset, $count) - an associative array: array('offset' => $offset, 'count' => $count) - * The method Predis\Client::__construct() now accepts also instances of + * The method Predis\Client::__construct() now accepts also instances of Predis\ConnectionParameters. - * Predis\MultiExecBlock and Predis\PubSubContext now throw an exception - when trying to create their instances using a profile that does not - support the required Redis commands or when the client is connected to + * Predis\MultiExecBlock and Predis\PubSubContext now throw an exception + when trying to create their instances using a profile that does not + support the required Redis commands or when the client is connected to a cluster of connections. * Various improvements to Predis\MultiExecBlock: - fixes and more consistent behaviour across various usage cases. - - support for WATCH and UNWATCH when using the current development + - support for WATCH and UNWATCH when using the current development profile (Redis v2.2) and aborted transactions. - * New signature for Predis\Client::multiExec() which is now able to accept - an array of options for the underlying instance of Predis\MultiExecBlock. + * New signature for Predis\Client::multiExec() which is now able to accept + an array of options for the underlying instance of Predis\MultiExecBlock. Backwards compatibility with previous releases of Predis is ensured. - * New signature for Predis\Client::pipeline() which is now able to accept - an array of options for the underlying instance of Predis\CommandPipeline. - Backwards compatibility with previous releases of Predis is ensured. + * New signature for Predis\Client::pipeline() which is now able to accept + an array of options for the underlying instance of Predis\CommandPipeline. + Backwards compatibility with previous releases of Predis is ensured. The method Predis\Client::pipelineSafe() is to be considered deprecated. - * FIX: The WEIGHT modifier for ZUNIONSTORE and ZINTERSTORE was handled + * FIX: The WEIGHT modifier for ZUNIONSTORE and ZINTERSTORE was handled incorrectly with more than two weights specified. v0.6.0 (2010-05-24) - * Switched to the new multi-bulk request protocol for all of the commands - in the Redis 1.2 and Redis 2.0 profiles. Inline and bulk requests are now + * Switched to the new multi-bulk request protocol for all of the commands + in the Redis 1.2 and Redis 2.0 profiles. Inline and bulk requests are now deprecated as they will be removed in future releases of Redis. - * The default server profile is "2.0" (targeting Redis 2.0.x). If you are - using older versions of Redis, it is highly recommended that you specify - which server profile the client should use (e.g. "1.2" when connecting + * The default server profile is "2.0" (targeting Redis 2.0.x). If you are + using older versions of Redis, it is highly recommended that you specify + which server profile the client should use (e.g. "1.2" when connecting to instances of Redis 1.2.x). - * Support for Redis 1.0 is now optional and it is provided by requiring + * Support for Redis 1.0 is now optional and it is provided by requiring 'Predis_Compatibility.php' before creating an instance of Predis\Client. * New commands added to the Redis 2.0 profile since Predis 0.5.1: - Strings: SETEX, APPEND, SUBSTR - ZSets : ZCOUNT, ZRANK, ZUNIONSTORE, ZINTERSTORE, ZREMBYRANK, ZREVRANK - - Hashes : HSET, HSETNX, HMSET, HINCRBY, HGET, HMGET, HDEL, HEXISTS, + - Hashes : HSET, HSETNX, HMSET, HINCRBY, HGET, HMGET, HDEL, HEXISTS, HLEN, HKEYS, HVALS, HGETALL - PubSub : PUBLISH, SUBSCRIBE, UNSUBSCRIBE - Misc. : DISCARD, CONFIG - * Introduced client-level options with the new Predis\ClientOptions class. - Options can be passed to Predis\Client::__construct in its second argument - as an array or an instance of Predis\ClientOptions. For brevity's sake and - compatibility with older versions, the constructor of Predis\Client still + * Introduced client-level options with the new Predis\ClientOptions class. + Options can be passed to Predis\Client::__construct in its second argument + as an array or an instance of Predis\ClientOptions. For brevity's sake and + compatibility with older versions, the constructor of Predis\Client still accepts an instance of Predis\RedisServerProfile in its second argument. The currently supported client options are: - profile [default: "2.0" as of Predis 0.6.0] - specifies which server profile to use when connecting to Redis. This - option accepts an instance of Predis\RedisServerProfile or a string + specifies which server profile to use when connecting to Redis. This + option accepts an instance of Predis\RedisServerProfile or a string that indicates the target version. - key_distribution [default: Predis\Distribution\HashRing] - specifies which key distribution strategy to use to distribute keys - among the servers that compose a cluster. This option accepts an - instance of Predis\Distribution\IDistributionStrategy so that users - can implement their own key distribution strategy. Optionally, the new - Predis\Distribution\KetamaPureRing class also provides a pure-PHP + specifies which key distribution strategy to use to distribute keys + among the servers that compose a cluster. This option accepts an + instance of Predis\Distribution\IDistributionStrategy so that users + can implement their own key distribution strategy. Optionally, the new + Predis\Distribution\KetamaPureRing class also provides a pure-PHP implementation of the same algorithm used by libketama. - throw_on_error [default: TRUE] - server errors can optionally be handled "silently": instead of throwing + server errors can optionally be handled "silently": instead of throwing an exception, the client returns an error response type. - iterable_multibulk [EXPERIMENTAL - default: FALSE] - in addition to the classic way of fetching a whole multibulk reply - into an array, the client can now optionally stream a multibulk reply - down to the user code by using PHP iterators. It is just a little bit + in addition to the classic way of fetching a whole multibulk reply + into an array, the client can now optionally stream a multibulk reply + down to the user code by using PHP iterators. It is just a little bit slower, but it can save a lot of memory in certain scenarios. - * New parameters for connections: + * New parameters for connections: - alias [default: not set] - every connection can now be identified by an alias that is useful to + every connection can now be identified by an alias that is useful to get a certain connection when connected to a cluster of Redis servers. - weight [default: not set] - allows the client to balance the keys asymmetrically across multiple - servers. This might be useful when you have servers with different - amounts of memory and you want to distribute the load of your keys + allows the client to balance the keys asymmetrically across multiple + servers. This might be useful when you have servers with different + amounts of memory and you want to distribute the load of your keys accordingly. - connection_async [default: FALSE] - estabilish connections to servers in a non-blocking way, so that the - client is not blocked while the underlying resource performs the actual + estabilish connections to servers in a non-blocking way, so that the + client is not blocked while the underlying resource performs the actual connection. - connection_persistent [default: FALSE] - the underlying connection resource is left open when a script ends its - lifecycle. Persistent connections can lead to unpredictable or strange + the underlying connection resource is left open when a script ends its + lifecycle. Persistent connections can lead to unpredictable or strange behaviours, so they should be used with extreme care. - * Introduced the Predis\Pipeline\IPipelineExecutor interface. Classes that - implements this interface are used internally by the Predis\CommandPipeline - class to change the behaviour of the pipeline when writing/reading commands + * Introduced the Predis\Pipeline\IPipelineExecutor interface. Classes that + implements this interface are used internally by the Predis\CommandPipeline + class to change the behaviour of the pipeline when writing/reading commands from one or multiple servers. Here is the list of the default executors: - Predis\Pipeline\StandardExecutor - Exceptions generated by server errors might be thrown depending on the - options passed to the client (see "throw_on_error"). Instead, protocol - or network errors always throw exceptions. This is the default executor - for single and clustered connections and shares the same behaviour of + Exceptions generated by server errors might be thrown depending on the + options passed to the client (see "throw_on_error"). Instead, protocol + or network errors always throw exceptions. This is the default executor + for single and clustered connections and shares the same behaviour of Predis 0.5.x. - Predis\Pipeline\SafeExecutor - Exceptions generated by server, protocol or network errors are not - thrown, instead they are returned in the response array as instances of + Exceptions generated by server, protocol or network errors are not + thrown, instead they are returned in the response array as instances of ResponseError or CommunicationException. - Predis\Pipeline\SafeClusterExecutor - This executor shares the same behaviour of Predis\Pipeline\SafeExecutor + This executor shares the same behaviour of Predis\Pipeline\SafeExecutor but it is geared towards clustered connections. - * Support for PUBSUB is handled by the new Predis\PubSubContext class, which + * Support for PUBSUB is handled by the new Predis\PubSubContext class, which could also be used to build a callback dispatcher for PUBSUB scenarios. - * When connected to a cluster of connections, it is now possible to get a - new Predis\Client instance for a single connection of the cluster by + * When connected to a cluster of connections, it is now possible to get a + new Predis\Client instance for a single connection of the cluster by passing its alias/index to the new Predis\Client::getClientFor() method. - * CommandPipeline and MultiExecBlock return their instances when invoking + * CommandPipeline and MultiExecBlock return their instances when invoking commands, thus allowing method chaining in pipelines and multi-exec blocks. * MultiExecBlock instances can handle the new DISCARD command. - * Connections now support float values for the connection_timeout parameter + * Connections now support float values for the connection_timeout parameter to express timeouts with a microsecond resolution. - * FIX: TCP connections now respect the read/write timeout parameter when - reading the payload of server responses. Previously, stream_get_contents() - was being used internally to read data from a connection but it looks like - PHP does not honour the specified timeout for socket streams when inside + * FIX: TCP connections now respect the read/write timeout parameter when + reading the payload of server responses. Previously, stream_get_contents() + was being used internally to read data from a connection but it looks like + PHP does not honour the specified timeout for socket streams when inside this function. - * FIX: The GET parameter for the SORT command now accepts also multiple key + * FIX: The GET parameter for the SORT command now accepts also multiple key patterns by passing an array of strings. (ISSUE #1). - * FIX: Replies to the DEL command return the number of elements deleted by + * FIX: Replies to the DEL command return the number of elements deleted by the server and not 0 or 1 interpreted as a boolean response. (ISSUE #4). v0.5.1 (2010-01-23) @@ -250,7 +250,7 @@ v0.5.1 (2010-01-23) * Added missing support for BGREWRITEAOF for Redis >= 1.2.0 - * Implemented a factory method for the RedisServerProfile class to ease the + * Implemented a factory method for the RedisServerProfile class to ease the creation of new server profile instances based on a version string. v0.5.0 (2010-01-09) diff --git a/README.markdown b/README.markdown index d5877733..1e459413 100644 --- a/README.markdown +++ b/README.markdown @@ -19,14 +19,14 @@ For a version compatible with PHP 5.2 you must use the backported version from t ## Quick examples ## -See the [official wiki](http://wiki.github.com/nrk/predis) of the project for a more +See the [official wiki](http://wiki.github.com/nrk/predis) of the project for a more complete coverage of all the features available in Predis. ### Loading Predis -Predis relies on the autoloading features of PHP and complies with the -[PSR-0 standard](http://groups.google.com/group/php-standards/web/psr-0-final-proposal) +Predis relies on the autoloading features of PHP and complies with the +[PSR-0 standard](http://groups.google.com/group/php-standards/web/psr-0-final-proposal) for interoperability with most of the major frameworks and libraries. When used in a project or script without PSR-0 autoloading, Predis includes its own autoloader for you to use: @@ -41,19 +41,19 @@ Predis\Autoloader::register(); // requiring any additional files. ``` -You can also create a single [Phar](http://www.php.net/manual/en/intro.phar.php) archive from the repository -just by launching the `createPhar.php` script located in the `bin` directory. The generated Phar ships with -a stub that defines an autoloader function for Predis, so you just need to require the Phar archive in order +You can also create a single [Phar](http://www.php.net/manual/en/intro.phar.php) archive from the repository +just by launching the `createPhar.php` script located in the `bin` directory. The generated Phar ships with +a stub that defines an autoloader function for Predis, so you just need to require the Phar archive in order to be able to use the library. -Alternatively you can generate a single PHP file that holds every class, just like older versions of Predis, -using the `createSingleFile.php` script located in the `bin` directory. In this way you can load Predis in +Alternatively you can generate a single PHP file that holds every class, just like older versions of Predis, +using the `createSingleFile.php` script located in the `bin` directory. In this way you can load Predis in your scripts simply by using functions such as `require` and `include`, but this practice is not encouraged. ### Connecting to a local instance of Redis ### -You don't have to specify a tcp host and port when connecting to Redis instances running on the +You don't have to specify a tcp host and port when connecting to Redis instances running on the localhost on the default port: ``` php @@ -81,9 +81,9 @@ $redis = new Predis\Client(array( ### Pipelining multiple commands to multiple instances of Redis with client-side sharding ### -Pipelining helps with performances when there is the need to issue many commands to a server -in one go. Furthermore, pipelining works transparently even on aggregated connections. Predis, -in fact, supports client-side sharding of data using consistent-hashing on keys and clustered +Pipelining helps with performances when there is the need to issue many commands to a server +in one go. Furthermore, pipelining works transparently even on aggregated connections. Predis, +in fact, supports client-side sharding of data using consistent-hashing on keys and clustered connections are supported natively by the client class. ``` php @@ -104,8 +104,8 @@ $replies = $redis->pipeline(function($pipe) { ### Overriding standard connection classes with custom ones ### -Predis allows developers to create new connection classes to add support for new protocols -or override the existing ones to provide a different implementation compared to the default +Predis allows developers to create new connection classes to add support for new protocols +or override the existing ones to provide a different implementation compared to the default classes. This can be obtained by subclassing the `Predis\Network\IConnectionSingle` interface. ``` php @@ -120,17 +120,17 @@ Predis\ConnectionFactory::define('tcp', 'MyConnectionClass'); ``` -You can have a look at the `Predis\Network` namespace for some actual code that gives a better +You can have a look at the `Predis\Network` namespace for some actual code that gives a better insight about how to create new connection classes. ### Definition and runtime registration of new commands on the client ### -Let's suppose Redis just added the support for a brand new feature associated -with a new command. If you want to start using the above mentioned new feature -right away without messing with Predis source code or waiting for it to find -its way into a stable Predis release, then you can start off by creating a new -class that matches the command type and its behaviour and then bind it to a +Let's suppose Redis just added the support for a brand new feature associated +with a new command. If you want to start using the above mentioned new feature +right away without messing with Predis source code or waiting for it to find +its way into a stable Predis release, then you can start off by creating a new +class that matches the command type and its behaviour and then bind it to a client instance at runtime. Actually, it is easier done than said: ``` php @@ -151,19 +151,19 @@ $redis->newcmd(); ## Development ## -Predis is fully backed up by a test suite which tries to cover all the aspects of the -client library and the interaction of every single command with a Redis server. If you -want to work on Predis, it is highly recommended that you first run the test suite to +Predis is fully backed up by a test suite which tries to cover all the aspects of the +client library and the interaction of every single command with a Redis server. If you +want to work on Predis, it is highly recommended that you first run the test suite to be sure that everything is OK, and report strange behaviours or bugs. -When modifying Predis please be sure that no warnings or notices are emitted by PHP -by running the interpreter in your development environment with the `error_reporting` +When modifying Predis please be sure that no warnings or notices are emitted by PHP +by running the interpreter in your development environment with the `error_reporting` variable set to `E_ALL | E_STRICT`. -The recommended way to contribute to Predis is to fork the project on GitHub, create -new topic branches on your newly created repository to fix or add features and then -open a new pull request with a description of the applied changes. Obviously, you can -use any other Git hosting provider of your preference. Diff patches will be accepted +The recommended way to contribute to Predis is to fork the project on GitHub, create +new topic branches on your newly created repository to fix or add features and then +open a new pull request with a description of the applied changes. Obviously, you can +use any other Git hosting provider of your preference. Diff patches will be accepted too, even though they are not the preferred way to contribute to Predis. diff --git a/TODO b/TODO index d1332a12..7d415d7f 100644 --- a/TODO +++ b/TODO @@ -5,7 +5,7 @@ * The internals of Predis\MultiExecContext should be refactored since the code has become a bit too convoluted. -* Switch to smaller test units and add more granular tests that try to cover +* Switch to smaller test units and add more granular tests that try to cover every single class. * Documentation! The README is obviously not enought to show how to use Predis diff --git a/examples/DispatcherLoop.php b/examples/DispatcherLoop.php index 609e9d29..046475ae 100644 --- a/examples/DispatcherLoop.php +++ b/examples/DispatcherLoop.php @@ -14,7 +14,7 @@ require 'SharedConfigurations.php'; /* This is a basic example on how to use the Predis\DispatcherLoop class. -To see this example in action you can just use redis-cli and publish some +To see this example in action you can just use redis-cli and publish some messages to the 'events' and 'control' channel, e.g.: ./redis-cli diff --git a/examples/MultiExecTransactionsWithCAS.php b/examples/MultiExecTransactionsWithCAS.php index a07f969d..16b2b689 100644 --- a/examples/MultiExecTransactionsWithCAS.php +++ b/examples/MultiExecTransactionsWithCAS.php @@ -14,7 +14,7 @@ require 'SharedConfigurations.php'; // This is an implementation of an atomic client-side ZPOP using the support for // check-and-set (CAS) operations with MULTI/EXEC transactions, as described in // "WATCH explained" from http://redis.io/topics/transactions -// +// // First, populate your database with a tiny sample data set: // // ./redis-cli diff --git a/examples/PipelineContext.php b/examples/PipelineContext.php index 1a4755b0..d7dcd22c 100644 --- a/examples/PipelineContext.php +++ b/examples/PipelineContext.php @@ -39,7 +39,7 @@ Array [5] => 40 [6] => Array ( - [0] => + [0] => [1] => 40 ) diff --git a/lib/Predis/Commands/Processors/ProcessorChain.php b/lib/Predis/Commands/Processors/ProcessorChain.php index 14271a76..6377c8c5 100644 --- a/lib/Predis/Commands/Processors/ProcessorChain.php +++ b/lib/Predis/Commands/Processors/ProcessorChain.php @@ -65,7 +65,7 @@ class ProcessorChain implements ICommandProcessorChain, \ArrayAccess /** * {@inheritdoc} */ - public function getProcessors() + public function getProcessors() { return $this->_processors; } diff --git a/lib/Predis/Distribution/HashRing.php b/lib/Predis/Distribution/HashRing.php index 8104617e..51dd8e48 100644 --- a/lib/Predis/Distribution/HashRing.php +++ b/lib/Predis/Distribution/HashRing.php @@ -74,7 +74,7 @@ class HashRing implements IDistributionStrategy /** * Resets the distributor. */ - private function reset() + private function reset() { unset( $this->_ring, @@ -216,9 +216,9 @@ class HashRing implements IDistributionStrategy /** * Implements a strategy to deal with wrap-around errors during binary searches. * - * @param int $upper + * @param int $upper * @param int $lower - * @param int $ringKeysCount + * @param int $ringKeysCount * @return int */ protected function wrapAroundStrategy($upper, $lower, $ringKeysCount) diff --git a/lib/Predis/Pipeline/PipelineContext.php b/lib/Predis/Pipeline/PipelineContext.php index 6641ba97..41293453 100644 --- a/lib/Predis/Pipeline/PipelineContext.php +++ b/lib/Predis/Pipeline/PipelineContext.php @@ -44,7 +44,7 @@ class PipelineContext /** * Returns a pipeline executor depending on the kind of the underlying * connection and the passed options. - * + * * @param Client Client instance used by the context. * @param array Options for the context initialization. * @return IPipelineExecutor diff --git a/lib/Predis/Protocol/ProtocolException.php b/lib/Predis/Protocol/ProtocolException.php index a39565d7..65390219 100644 --- a/lib/Predis/Protocol/ProtocolException.php +++ b/lib/Predis/Protocol/ProtocolException.php @@ -14,7 +14,7 @@ namespace Predis\Protocol; use Predis\CommunicationException; /** - * Exception class that identifies errors encountered while + * Exception class that identifies errors encountered while * handling the Redis wire protocol. * * @author Daniele Alessandri diff --git a/lib/Predis/ResponseError.php b/lib/Predis/ResponseError.php index 2140e192..78df43ca 100644 --- a/lib/Predis/ResponseError.php +++ b/lib/Predis/ResponseError.php @@ -48,7 +48,7 @@ class ResponseError implements IRedisServerError /** * Converts the object to its string representation. - * + * * @return string */ public function __toString() diff --git a/lib/Predis/Transaction/MultiExecContext.php b/lib/Predis/Transaction/MultiExecContext.php index b035bb53..d00f7629 100644 --- a/lib/Predis/Transaction/MultiExecContext.php +++ b/lib/Predis/Transaction/MultiExecContext.php @@ -262,7 +262,7 @@ class MultiExecContext } /** - * Resets a transaction by UNWATCHing the keys that are being WATCHed and + * Resets a transaction by UNWATCHing the keys that are being WATCHed and * DISCARDing the pending commands that have been already sent to the server. * * @return MultiExecContext diff --git a/test/ClientFeaturesTest.php b/test/ClientFeaturesTest.php index f9297cca..c275fb97 100644 --- a/test/ClientFeaturesTest.php +++ b/test/ClientFeaturesTest.php @@ -495,7 +495,7 @@ class ClientFeaturesTestSuite extends PHPUnit_Framework_TestCase $client->flushdb(); RC::testForClientException($this, 'TEST', function() use($client) { - $client->pipeline(function($pipe) { + $client->pipeline(function($pipe) { $pipe->ping(); $pipe->set('foo', 'bar'); throw new Predis\ClientException("TEST"); diff --git a/test/RedisCommandsTest.php b/test/RedisCommandsTest.php index 260ac2dd..441ab594 100644 --- a/test/RedisCommandsTest.php +++ b/test/RedisCommandsTest.php @@ -21,7 +21,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase // TODO: missing test with float values for a few commands protected function setUp() - { + { $this->redis = RC::getConnection(); $this->redis->flushdb(); } @@ -613,7 +613,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase ); $this->assertEquals( - array(), + array(), $this->redis->lrange('keyDoesNotExist', 0, 1) ); @@ -1032,7 +1032,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase $setB = RC::setAddAndReturn($this->redis, 'setB', array(1, 3, 4, 6, 9, 10)); $this->assertTrue(RC::sameValuesInArrays( - $setA, + $setA, $this->redis->sinter('setA') )); @@ -1423,7 +1423,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase $zset = RC::zsetAddAndReturn($this->redis, 'zset', RC::getZSetArray()); $this->assertEquals( - array('a'), + array('a'), $this->redis->zrangebyscore('zset', -10, -10) );