setScriptReadOnly() public méthode

Marks a Lua script for EVAL and EVALSHA as a read-only operation. When the behaviour of a script can be decided only at runtime depending on its arguments, a callable object can be provided to dynamically check if the passed instance of EVAL or EVALSHA performs write operations or not.
public setScriptReadOnly ( string $script, mixed $readonly = true )
$script string Body of the Lua script.
$readonly mixed A boolean value or a callable object.
    table.insert(hashes, redis.call('hgetall', key))
end
return hashes
LUA;
    public function getScript()
    {
        return self::BODY;
    }
}
// ------------------------------------------------------------------------- //
$parameters = array('tcp://127.0.0.1:6379/?alias=master', 'tcp://127.0.0.1:6380/?alias=slave');
$options = array('profile' => function ($options, $option) {
    $profile = $options->getDefault($option);
    $profile->defineCommand('hmgetall', 'HashMultipleGetAll');
    return $profile;
}, 'replication' => function () {
    $strategy = new ReplicationStrategy();
    $strategy->setScriptReadOnly(HashMultipleGetAll::BODY);
    $replication = new MasterSlaveReplication($strategy);
    return $replication;
});
// ------------------------------------------------------------------------- //
$client = new Predis\Client($parameters, $options);
// Execute the following commands on the master server using redis-cli:
// $ ./redis-cli HMSET metavars foo bar hoge piyo
// $ ./redis-cli HMSET servers master host1 slave host2
$hashes = $client->hmgetall('metavars', 'servers');
$replication = $client->getConnection();
$stillOnSlave = $replication->getCurrent() === $replication->getConnectionById('slave');
echo "Is still on slave? ", $stillOnSlave ? 'YES!' : 'NO!', PHP_EOL;
var_export($hashes);
 /**
  * @group disconnected
  */
 public function testSetLuaScriptAsReadOperationWorksWithScriptedCommandAndCallableCheck()
 {
     $strategy = new ReplicationStrategy();
     $command = $this->getMock('Predis\\Command\\ScriptedCommand', array('getScript'));
     $command->expects($this->any())->method('getScript')->will($this->returnValue($script = 'return true'));
     $command->setArguments(array('trigger', false));
     $strategy->setScriptReadOnly($script, true);
     $this->assertTrue($strategy->isReadOperation($command));
 }