我在欢迎控制器上使用了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();
}
}
答案 0 :(得分:1)
function_exists()
适用于函数,但不适用于类方法 - 这些是不同的东西。你想要的是method_exists():
method_exists($this, $function);