69 lines
1.5 KiB
PHP
69 lines
1.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Credis_Module
|
|
*
|
|
* Implements Redis Modules support. see http://redismodules.com
|
|
*
|
|
* @author Igor Veremchuk <igor.veremchuk@gmail.com>
|
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
|
* @package Credis_Module
|
|
*/
|
|
class Credis_Module
|
|
{
|
|
const MODULE_COUNTING_BLOOM_FILTER = 'CBF';
|
|
|
|
/** @var Credis_Client */
|
|
protected $client;
|
|
|
|
/** @var string */
|
|
protected $moduleName;
|
|
|
|
/**
|
|
* @param Credis_Client $client
|
|
* @param string $module
|
|
*/
|
|
public function __construct(Credis_Client $client, $module = null)
|
|
{
|
|
$client->forceStandalone(); // Redis Modules command not currently supported by phpredis
|
|
$this->client = $client;
|
|
|
|
if (isset($module)) {
|
|
$this->setModule($module);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clean up client on destruct
|
|
*/
|
|
public function __destruct()
|
|
{
|
|
$this->client->close();
|
|
}
|
|
|
|
/**
|
|
* @param $moduleName
|
|
* @return $this
|
|
*/
|
|
public function setModule($moduleName)
|
|
{
|
|
$this->moduleName = (string) $moduleName;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param string $args
|
|
* @return mixed
|
|
*/
|
|
public function __call($name, $args)
|
|
{
|
|
if ($this->moduleName === null) {
|
|
throw new \LogicException('Module must be set.');
|
|
}
|
|
|
|
return call_user_func(array($this->client, sprintf('%s.%s', $this->moduleName, $name)), $args);
|
|
}
|
|
}
|