我正在编写一个数据库包装类,需要类似的东西:
public function bind($types, $params, ...) {
$this->prep->bind_param($types, $params, ...);
}
我怎样才能使论点动态化,以获得 N 参数?
我知道函数func_get_args()
但没有帮助,我可以获取参数,但如何传递?
在我的脑海中,你可以使用call_user_func_array()
:
public function bind() {
$args=func_get_args();
$method=array($this->prep,'bind_param');
call_user_func_array($method,$args);
}
该功能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
可能比直接调用方法要慢一些,不幸的是,除了前几个参数中的硬代码之外,您对此无能为力。
使用数组,我建议您使用经典方式,并让一些“核心”参数远离数组,而不是像这样将可选参数放在数组中:
function function(Class $object, array $options = array()){
}