杂货CRUD:回调函数不起作用


Grocery CRUD: callback functions does not work

我已经尝试了几次,但似乎没有一个回调函数与我的代码一起工作。

这是我调用的方法grocery crud

public function show_courses()
{
    $crud = new grocery_CRUD();
    $crud->set_table('course');
    $crud->set_theme('datatables');
    $crud->fields('course_id','course_name','course_cordinator');
    $crud->callback_after_insert(array($this, '_myfunc'));
    $output = $crud->render();
    $this->output($output);        
}

这里是回调函数:

function _myfunc($post_array,$primary_key)
{
    $q = array(
        "notice" => $primary_key
    );
    $this->db->insert('notice', $q);
    return true;
}

请帮我找出我的代码有什么问题

如果您使用的是PHP版本>= 5.3,那么使用匿名函数要好得多。它是更好的,因为它总是工作,你不需要搜索找到函数,它是更可读的,你不需要使用只是一个假的名字来调用它(例如_myfunc)。所以在你的例子中,你可以输入:

public function show_courses()
{
    $crud = new grocery_CRUD();
    $crud->set_table('course');
    $crud->set_theme('datatables');
    $crud->fields('course_id','course_name','course_cordinator');
    $crud->callback_after_insert(function ($post_array,$primary_key) {
            $this->db->insert('notice', array(
                "notice" => $primary_key
            ));
            return true;
    });
    $output = $crud->render();
    $this->output($output);        
}

对于引用,所有回调都使用PHP的方法:call_user_func。如果array($this, '_myfunct')处的函数不存在,PHP不会抛出任何错误。这就是为什么使用匿名函数总是更好的原因。