Kaynağa Gözat

Remove whitespace [Gun.io WhitespaceBot]

Gun.io Whitespace Robot 13 yıl önce
ebeveyn
işleme
b9ca78ac43

+ 5 - 5
BETA

@@ -1,10 +1,10 @@
 *** PLEASE READ ***
 *** 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).
 (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.
 use a tagged release or checkout the version-0.6 branch from the repository.

+ 93 - 93
CHANGELOG

@@ -3,13 +3,13 @@ v0.7.0 (2010-xx-xx)
 
 
   * List of the methods removed in this release:
   * List of the methods removed in this release:
       - Predis\Client::create()
       - 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.
         with Predis\Client::__construct() since Predis 0.6.0.
       - Predis\Client::pipelineSafe()
       - 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)).
         removed. Use Predis\Client::pipeline(array('safe' => true)).
       - Predis\Client::rawCommand()
       - 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.
         underlying connection class used internally by the client instance.
       - Predis\Client::setProfile()
       - Predis\Client::setProfile()
         This method is no more part of the public API and has been made private.
         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
   * Predis now includes its own autoloader. To use it, include Autoloader.php
     and call Predis\Autoloader::register().
     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.
     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.
     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.
     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.
     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.
     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().
     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().
     Predis\IConnection as parameters of Predis\Client::__construct().
 
 
 v0.6.5 (2011-02-12)
 v0.6.5 (2011-02-12)
@@ -49,14 +49,14 @@ v0.6.5 (2011-02-12)
     desynchronization errors (ISSUE #20).
     desynchronization errors (ISSUE #20).
 
 
 v0.6.4 (2011-02-12)
 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.
     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.
     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.
     Predis\PubSubContext.
 
 
 v0.6.3 (2011-01-01)
 v0.6.3 (2011-01-01)
@@ -64,10 +64,10 @@ v0.6.3 (2011-01-01)
       - Strings: SETRANGE, GETRANGE, SETBIT, GETBIT
       - Strings: SETRANGE, GETRANGE, SETBIT, GETBIT
       - Lists  : BRPOPLPUSH
       - 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.
     exception is thrown.
 
 
 v0.6.2 (2010-11-28)
 v0.6.2 (2010-11-28)
@@ -79,17 +79,17 @@ v0.6.2 (2010-11-28)
       - ZSets  : ZREVRANGEBYSCORE
       - ZSets  : ZREVRANGEBYSCORE
       - Misc.  : PERSIST
       - 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.
     monitored during a transaction.
 
 
   * Improved the behaviour of Predis\MultiExecBlock in certain corner cases.
   * Improved the behaviour of Predis\MultiExecBlock in certain corner cases.
 
 
   * Improved parameters checking for the SORT command.
   * 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).
     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.
     chaining with Predis\MultiExecBlock.
 
 
 v0.6.1 (2010-07-11)
 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):
   * New commands available in the Redis v2.2 profile (dev):
       - Misc.  : WATCH, UNWATCH
       - 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.
     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 indexed array: array($offset, $count)
       - an associative array: array('offset' => $offset, 'count' => $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\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.
     a cluster of connections.
 
 
   * Various improvements to Predis\MultiExecBlock:
   * Various improvements to Predis\MultiExecBlock:
       - fixes and more consistent behaviour across various usage cases.
       - 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.
         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.
     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.
     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.
     incorrectly with more than two weights specified.
 
 
 v0.6.0 (2010-05-24)
 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.
     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).
     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.
     'Predis_Compatibility.php' before creating an instance of Predis\Client.
 
 
   * New commands added to the Redis 2.0 profile since Predis 0.5.1:
   * New commands added to the Redis 2.0 profile since Predis 0.5.1:
       - Strings: SETEX, APPEND, SUBSTR
       - Strings: SETEX, APPEND, SUBSTR
       - ZSets  : ZCOUNT, ZRANK, ZUNIONSTORE, ZINTERSTORE, ZREMBYRANK, ZREVRANK
       - 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
                  HLEN, HKEYS, HVALS, HGETALL
       - PubSub : PUBLISH, SUBSCRIBE, UNSUBSCRIBE
       - PubSub : PUBLISH, SUBSCRIBE, UNSUBSCRIBE
       - Misc.  : DISCARD, CONFIG
       - 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.
     accepts an instance of Predis\RedisServerProfile in its second argument.
     The currently supported client options are:
     The currently supported client options are:
       - profile [default: "2.0" as of Predis 0.6.0]
       - 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.
         that indicates the target version.
       - key_distribution [default: Predis\Distribution\HashRing]
       - 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.
         implementation of the same algorithm used by libketama.
       - throw_on_error [default: TRUE]
       - 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.
         an exception, the client returns an error response type.
       - iterable_multibulk [EXPERIMENTAL - default: FALSE]
       - 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.
         slower, but it can save a lot of memory in certain scenarios.
 
 
-  * New parameters for connections: 
+  * New parameters for connections:
       - alias [default: not set]
       - 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.
         get a certain connection when connected to a cluster of Redis servers.
       - weight [default: not set]
       - 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.
         accordingly.
       - connection_async [default: FALSE]
       - 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.
       - connection_persistent [default: FALSE]
       - 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.
         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:
     from one or multiple servers. Here is the list of the default executors:
       - Predis\Pipeline\StandardExecutor
       - 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 0.5.x.
       - Predis\Pipeline\SafeExecutor
       - 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.
         ResponseError or CommunicationException.
       - Predis\Pipeline\SafeClusterExecutor
       - 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.
         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.
     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.
     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.
     commands, thus allowing method chaining in pipelines and multi-exec blocks.
 
 
   * MultiExecBlock instances can handle the new DISCARD command.
   * 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.
     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.
     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).
     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).
     the server and not 0 or 1 interpreted as a boolean response. (ISSUE #4).
 
 
 v0.5.1 (2010-01-23)
 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
   * 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.
     creation of new server profile instances based on a version string.
 
 
 v0.5.0 (2010-01-09)
 v0.5.0 (2010-01-09)

+ 29 - 29
README.markdown

@@ -19,14 +19,14 @@ For a version compatible with PHP 5.2 you must use the backported version from t
 
 
 ## Quick examples ##
 ## 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.
 complete coverage of all the features available in Predis.
 
 
 
 
 ### Loading 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.
 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:
 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.
 // 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.
 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.
 your scripts simply by using functions such as `require` and `include`, but this practice is not encouraged.
 
 
 
 
 ### Connecting to a local instance of Redis ###
 ### 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:
 localhost on the default port:
 
 
 ``` php
 ``` php
@@ -81,9 +81,9 @@ $redis = new Predis\Client(array(
 
 
 ### Pipelining multiple commands to multiple instances of Redis with client-side sharding ###
 ### 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.
 connections are supported natively by the client class.
 
 
 ``` php
 ``` php
@@ -104,8 +104,8 @@ $replies = $redis->pipeline(function($pipe) {
 
 
 ### Overriding standard connection classes with custom ones ###
 ### 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.
 classes. This can be obtained by subclassing the `Predis\Network\IConnectionSingle` interface.
 
 
 ``` php
 ``` 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.
 insight about how to create new connection classes.
 
 
 
 
 ### Definition and runtime registration of new commands on the client ###
 ### 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:
 client instance at runtime. Actually, it is easier done than said:
 
 
 ``` php
 ``` php
@@ -151,19 +151,19 @@ $redis->newcmd();
 
 
 ## Development ##
 ## 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.
 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`.
 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.
 too, even though they are not the preferred way to contribute to Predis.
 
 
 
 

+ 1 - 1
TODO

@@ -5,7 +5,7 @@
 * The internals of Predis\MultiExecContext should be refactored since the code
 * The internals of Predis\MultiExecContext should be refactored since the code
   has become a bit too convoluted.
   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.
   every single class.
 
 
 * Documentation! The README is obviously not enought to show how to use Predis
 * Documentation! The README is obviously not enought to show how to use Predis

+ 1 - 1
examples/DispatcherLoop.php

@@ -14,7 +14,7 @@ require 'SharedConfigurations.php';
 /*
 /*
 This is a basic example on how to use the Predis\DispatcherLoop class.
 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.:
 messages to the 'events' and 'control' channel, e.g.:
 
 
 ./redis-cli
 ./redis-cli

+ 1 - 1
examples/MultiExecTransactionsWithCAS.php

@@ -14,7 +14,7 @@ require 'SharedConfigurations.php';
 // This is an implementation of an atomic client-side ZPOP using the support for
 // 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
 // check-and-set (CAS) operations with MULTI/EXEC transactions, as described in
 // "WATCH explained" from http://redis.io/topics/transactions
 // "WATCH explained" from http://redis.io/topics/transactions
-// 
+//
 // First, populate your database with a tiny sample data set:
 // First, populate your database with a tiny sample data set:
 //
 //
 // ./redis-cli
 // ./redis-cli

+ 1 - 1
examples/PipelineContext.php

@@ -39,7 +39,7 @@ Array
     [5] => 40
     [5] => 40
     [6] => Array
     [6] => Array
         (
         (
-            [0] => 
+            [0] =>
             [1] => 40
             [1] => 40
         )
         )
 
 

+ 1 - 1
lib/Predis/Commands/Processors/ProcessorChain.php

@@ -65,7 +65,7 @@ class ProcessorChain implements ICommandProcessorChain, \ArrayAccess
     /**
     /**
      * {@inheritdoc}
      * {@inheritdoc}
      */
      */
-    public function getProcessors() 
+    public function getProcessors()
     {
     {
         return $this->_processors;
         return $this->_processors;
     }
     }

+ 3 - 3
lib/Predis/Distribution/HashRing.php

@@ -74,7 +74,7 @@ class HashRing implements IDistributionStrategy
     /**
     /**
      * Resets the distributor.
      * Resets the distributor.
      */
      */
-    private function reset() 
+    private function reset()
     {
     {
         unset(
         unset(
             $this->_ring,
             $this->_ring,
@@ -216,9 +216,9 @@ class HashRing implements IDistributionStrategy
     /**
     /**
      * Implements a strategy to deal with wrap-around errors during binary searches.
      * Implements a strategy to deal with wrap-around errors during binary searches.
      *
      *
-     * @param int $upper 
+     * @param int $upper
      * @param int $lower
      * @param int $lower
-     * @param int $ringKeysCount 
+     * @param int $ringKeysCount
      * @return int
      * @return int
      */
      */
     protected function wrapAroundStrategy($upper, $lower, $ringKeysCount)
     protected function wrapAroundStrategy($upper, $lower, $ringKeysCount)

+ 1 - 1
lib/Predis/Pipeline/PipelineContext.php

@@ -44,7 +44,7 @@ class PipelineContext
     /**
     /**
      * Returns a pipeline executor depending on the kind of the underlying
      * Returns a pipeline executor depending on the kind of the underlying
      * connection and the passed options.
      * connection and the passed options.
-     * 
+     *
      * @param Client Client instance used by the context.
      * @param Client Client instance used by the context.
      * @param array Options for the context initialization.
      * @param array Options for the context initialization.
      * @return IPipelineExecutor
      * @return IPipelineExecutor

+ 1 - 1
lib/Predis/Protocol/ProtocolException.php

@@ -14,7 +14,7 @@ namespace Predis\Protocol;
 use Predis\CommunicationException;
 use Predis\CommunicationException;
 
 
 /**
 /**
- * Exception class that identifies errors encountered while 
+ * Exception class that identifies errors encountered while
  * handling the Redis wire protocol.
  * handling the Redis wire protocol.
  *
  *
  * @author Daniele Alessandri <suppakilla@gmail.com>
  * @author Daniele Alessandri <suppakilla@gmail.com>

+ 1 - 1
lib/Predis/ResponseError.php

@@ -48,7 +48,7 @@ class ResponseError implements IRedisServerError
 
 
     /**
     /**
      * Converts the object to its string representation.
      * Converts the object to its string representation.
-     * 
+     *
      * @return string
      * @return string
      */
      */
     public function __toString()
     public function __toString()

+ 1 - 1
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.
      * DISCARDing the pending commands that have been already sent to the server.
      *
      *
      * @return MultiExecContext
      * @return MultiExecContext

+ 1 - 1
test/ClientFeaturesTest.php

@@ -495,7 +495,7 @@ class ClientFeaturesTestSuite extends PHPUnit_Framework_TestCase
         $client->flushdb();
         $client->flushdb();
 
 
         RC::testForClientException($this, 'TEST', function() use($client) {
         RC::testForClientException($this, 'TEST', function() use($client) {
-            $client->pipeline(function($pipe) { 
+            $client->pipeline(function($pipe) {
                 $pipe->ping();
                 $pipe->ping();
                 $pipe->set('foo', 'bar');
                 $pipe->set('foo', 'bar');
                 throw new Predis\ClientException("TEST");
                 throw new Predis\ClientException("TEST");

+ 4 - 4
test/RedisCommandsTest.php

@@ -21,7 +21,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
     // TODO: missing test with float values for a few commands
     // TODO: missing test with float values for a few commands
 
 
     protected function setUp()
     protected function setUp()
-    { 
+    {
         $this->redis = RC::getConnection();
         $this->redis = RC::getConnection();
         $this->redis->flushdb();
         $this->redis->flushdb();
     }
     }
@@ -613,7 +613,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
         );
         );
 
 
         $this->assertEquals(
         $this->assertEquals(
-            array(), 
+            array(),
             $this->redis->lrange('keyDoesNotExist', 0, 1)
             $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));
         $setB = RC::setAddAndReturn($this->redis, 'setB', array(1, 3, 4, 6, 9, 10));
 
 
         $this->assertTrue(RC::sameValuesInArrays(
         $this->assertTrue(RC::sameValuesInArrays(
-            $setA, 
+            $setA,
             $this->redis->sinter('setA')
             $this->redis->sinter('setA')
         ));
         ));
 
 
@@ -1423,7 +1423,7 @@ class RedisCommandTestSuite extends PHPUnit_Framework_TestCase
         $zset = RC::zsetAddAndReturn($this->redis, 'zset', RC::getZSetArray());
         $zset = RC::zsetAddAndReturn($this->redis, 'zset', RC::getZSetArray());
 
 
         $this->assertEquals(
         $this->assertEquals(
-            array('a'), 
+            array('a'),
             $this->redis->zrangebyscore('zset', -10, -10)
             $this->redis->zrangebyscore('zset', -10, -10)
         );
         );