将数组分解为参数(CodeIgniter中的AJAX包装器)

时间:2011-11-09 20:57:54

标签: php ajax codeigniter parameters arguments

我正在尝试在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并将它们传递给一个接受多个参数的函数?

1 个答案:

答案 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);