Redis Credis_Client Php库

时间:2015-03-26 10:39:39

标签: php redis

我正在使用Php Credis_Client库作为我的一个应用程序。它以类似的方法定义了所有redis命令。

虽然调用这些函数可以很好地存储和检索Redis中的数据。

我查看了库代码,检查它究竟是做什么的。但是我无法弄清楚它是如何工作的?

以下是代码:

我用来设置哈希键的函数,

hSet('test','field','value');

这就是我在Redis lib文件中看到的

 * Hashes:
 * @method bool|int      hSet(string $key, string $field, string $value)
 * @method bool          hSetNx(string $key, string $field, string $value)

和__call($ name,$ args)函数

$response = call_user_func_array(array($this->redis, $name), $args);
//where $name can be function name and $args is parameters to be passed

然而无法弄清楚在PHP中写入hSet函数的位置。 任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

__call()方法是类中非显式定义方法的后备:当您尝试使用不存在的类方法时,会调用它。

IE:

cass A {
   public function x1() { return 1; }
   public function x2() { return 2; }
   public function __call($name, $args) { return 3; }
}

$a = new A;

var_dump($a->nonExistingMethod(1,2,3));

这显示3。

__call方法还接收2个参数,第一个是您调用的不存在函数的名称,第二个是参数数组,

在上一个示例中,

$namenonExistingMethod$argsarray( 1, 2, 3 )

在您的情况下,当您致电hSet时,它会使用'hset'作为名称并array('field','value')作为参数回退到__call方法,从而产生$this->redis->hSet('field','value')