* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Predis\Protocol\Text; use Predis\Commands\ICommand; use Predis\Protocol\ICommandSerializer; /** * Implements a pluggable command serializer using the standard wire protocol * defined by Redis. * * @link http://redis.io/topics/protocol * @author Daniele Alessandri */ class TextCommandSerializer implements ICommandSerializer { /** * {@inheritdoc} */ public function serialize(ICommand $command) { $commandId = $command->getId(); $arguments = $command->getArguments(); $cmdlen = strlen($commandId); $reqlen = count($arguments) + 1; $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandId}\r\n"; for ($i = 0; $i < $reqlen - 1; $i++) { $argument = $arguments[$i]; $arglen = strlen($argument); $buffer .= "\${$arglen}\r\n{$argument}\r\n"; } return $buffer; } }