Predis\Protocol\Text\ProtocolProcessor::read PHP Method

read() public method

public read ( Predis\Connection\CompositeConnectionInterface $connection )
$connection Predis\Connection\CompositeConnectionInterface
    public function read(CompositeConnectionInterface $connection)
    {
        $chunk = $connection->readLine();
        $prefix = $chunk[0];
        $payload = substr($chunk, 1);
        switch ($prefix) {
            case '+':
                return new StatusResponse($payload);
            case '$':
                $size = (int) $payload;
                if ($size === -1) {
                    return;
                }
                return substr($connection->readBuffer($size + 2), 0, -2);
            case '*':
                $count = (int) $payload;
                if ($count === -1) {
                    return;
                }
                if ($this->mbiterable) {
                    return new MultiBulkIterator($connection, $count);
                }
                $multibulk = array();
                for ($i = 0; $i < $count; ++$i) {
                    $multibulk[$i] = $this->read($connection);
                }
                return $multibulk;
            case ':':
                $integer = (int) $payload;
                return $integer == $payload ? $integer : $payload;
            case '-':
                return new ErrorResponse($payload);
            default:
                CommunicationException::handle(new ProtocolException($connection, "Unknown response prefix: '{$prefix}' [{$connection->getParameters()}]"));
                return;
        }
    }

Usage Example

 /**
  * @group disconnected
  * @expectedException \Predis\Protocol\ProtocolException
  * @expectedExceptionMessage Unknown response prefix: '!'.
  */
 public function testUnknownResponsePrefix()
 {
     $protocol = new ProtocolProcessor();
     $connection = $this->getMock('Predis\\Connection\\CompositeConnectionInterface');
     $connection->expects($this->once())->method('readLine')->will($this->returnValue('!'));
     $protocol->read($connection);
 }