diff --git a/lib/Predis.php b/lib/Predis.php index ce0c0773..ca826e64 100644 --- a/lib/Predis.php +++ b/lib/Predis.php @@ -697,6 +697,7 @@ class ResponseReader { } class ResponseError { + public $skipParse = true; private $_message; public function __construct($message) { @@ -722,11 +723,21 @@ class ResponseError { } class ResponseQueued { - public $queued = true; + public $skipParse = true; public function __toString() { return Protocol::QUEUED; } + + public function __get($property) { + if ($property === 'queued') { + return true; + } + } + + public function __isset($property) { + return $property === 'queued'; + } } /* ------------------------------------------------------------------------- */ @@ -873,7 +884,7 @@ class MultiExecBlock { } $command = $client->createCommand($method, $arguments); $response = $client->executeCommand($command); - if (!isset($response->queued)) { + if (!$response instanceof \Predis\ResponseQueued) { $this->malformedServerResponse( 'The server did not respond with a QUEUED status reply' ); @@ -1344,8 +1355,7 @@ class Connection implements IConnection { public function readResponse(Command $command) { $response = $this->_reader->read($this); - $skipparse = isset($response->queued) || isset($response->error); - return $skipparse ? $response : $command->parseResponse($response); + return isset($response->skipParse) ? $response : $command->parseResponse($response); } public function executeCommand(Command $command) { diff --git a/test/PredisClientFeatures.php b/test/PredisClientFeatures.php index d3331bd8..847ca68b 100644 --- a/test/PredisClientFeatures.php +++ b/test/PredisClientFeatures.php @@ -216,6 +216,7 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { function testResponseQueued() { $response = new \Predis\ResponseQueued(); + $this->assertTrue($response->skipParse); $this->assertTrue($response->queued); $this->assertEquals(\Predis\Protocol::QUEUED, (string)$response); } @@ -227,6 +228,7 @@ class PredisClientFeaturesTestSuite extends PHPUnit_Framework_TestCase { $errorMessage = 'ERROR MESSAGE'; $response = new \Predis\ResponseError($errorMessage); + $this->assertTrue($response->skipParse); $this->assertTrue($response->error); $this->assertEquals($errorMessage, $response->message); $this->assertEquals($errorMessage, (string)$response);