A super easy PHP Framework for web development!
https://github.com/exacti/phacil-framework
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
69 lines
1.5 KiB
3 years ago
|
<?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);
|
||
|
}
|
||
|
}
|