0

我正在编写一个数据库包装类,需要类似的东西:

public function bind($types, $params, ...) {
    $this->prep->bind_param($types, $params, ...);
}

我怎样才能使论点动态化,以获得 N 参数?

我知道函数func_get_args()但没有帮助,我可以获取参数,但如何传递?

4

3 回答 3

1

在我的脑海中,你可以使用call_user_func_array()

public function bind() {
  $args=func_get_args();
  $method=array($this->prep,'bind_param');
  call_user_func_array($method,$args);
}
于 2013-10-29T12:33:39.547 回答
1

该功能call_user_func_array应该是您需要的,类似于以下内容:

public function bind () {
    $args = func_get_args();
    call_user_func_array(array($this->prep, "bind_param"), $args);
}

call_user_func有时call_user_func_array可能比直接调用方法要慢一些,不幸的是,除了前几个参数中的硬代码之外,您对此无能为力。

于 2013-10-29T12:34:19.053 回答
1

使用数组,我建议您使用经典方式,并让一些“核心”参数远离数组,而不是像这样将可选参数放在数组中:

function function(Class $object, array $options = array()){

}
于 2013-10-29T12:34:41.293 回答