我正在尝试在CodeIgniter中构建一个AJAX包装器
function admin_ajax () {
$model = $this->input->post('model');
$method = $this->input->post('method');
if ( empty($model) || empty($method) )
die('Missing Class or Method');
if ( !method_exists($model, $method) )
die('Class or Method does not exist');
$args = $this->input->post('args');
$data = $this->$model->$method( $args );
echo json_encode( $data );
exit();
}
你可以告诉我我想要做什么。将模型和方法与一些参数一起发布到此函数,然后该函数调用该函数并传递参数($args
是一个数组btw)。
假设我有一个像:
这样的函数get_site_list ($page_index = 0, $page_size = 10) {
它需要两个参数,但我调用它的ajax函数只能传递一个参数。我不得不恢复做
function ajax_get_site_list ( $args ) {
return $this->get_site_list( $args[0], $args[1] );
}
但那很无聊。有没有办法可以将我的参数数组称为$args
并将它们传递给一个接受多个参数的函数?
答案 0 :(得分:3)
我认为您正在寻找call_user_func_array
:
function ajax_get_site_list ( $args ) {
return call_user_func_array(array($this, 'get_site_list'), $args);
}
你也可以使用ReflectionClass
;)
$class_name = get_class($this);
$method = new ReflectionMethod($class, 'get_site_list');
$method->invoke($args);