Codeigniter function_exists无法正常工作

时间:2016-01-26 10:40:57

标签: codeigniter

我在欢迎控制器上使用了php function_exists()函数。但由于某种原因,即使我的幻灯片功能存在,它也会继续抛出我的show_error。

在我的foreach循环中,我从数据库获取模块函数名称,在foreach循环中调用$function = $module['code'];

  

问题是:我如何确保function_exists检查   功能是否正确存在?

<?php

class Welcome extends CI_Controller {

public function index() {
    $data['content_top'] = $this->content_top();

    $this->load->view('home', $data);
}

public function content_top() {
    $data['modules'] = array();

    $modules = $this->get_module();

    foreach ($modules as $module) {

        $function = $module['code'];

        if (function_exists($function)) {

            $setting_info = array('test' => 'testing');

            if ($setting_info) {
                $data['modules'][] = $this->$function($setting_info);
            }

        } else {

            show_error('This ' . $function . ' does not exist on ' . __CLASS__ . ' controller!');

        }

    }

    return $this->load->view('content_top', $data, TRUE);
}

public function banner() {

}

public function slideshow($setting) {

    $data['test'] = $setting['test'];

    $this->load->view('module/slideshow', $data);
}

public function get_module() {
    $query = $this->db->get('modules');
    return $query->result_array();
}
}

1 个答案:

答案 0 :(得分:1)

function_exists()适用于函数,但不适用于类方法 - 这些是不同的东西。你想要的是method_exists()

method_exists($this, $function);