我正在编写一个数据库包装类,需要类似:
public function bind($types, $params, ...) {
$this->prep->bind_param($types, $params, ...);
}
如何让参数变得动态,有N-params?
我知道函数func_get_args()
但没有帮助,我可以获取参数,但是如何传递?
答案 0 :(得分:1)
在我的头顶,你可以使用call_user_func_array()
:
public function bind() {
$args=func_get_args();
$method=array($this->prep,'bind_param');
call_user_func_array($method,$args);
}
答案 1 :(得分: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
有时会比直接调用方法慢一点,遗憾的是,除了前几个参数中的硬代码之外,你无法做到这一点。
答案 2 :(得分:1)
使用一个数组,我建议你使用经典的方法,并保留一些“核心”参数远离数组,而不是像这样将数组中的选项放在数组中:
function function(Class $object, array $options = array()){
}