2016-01-26 79 views
-1

我使用php function_exists()函數存在於我的歡迎控制器上。但由於某種原因,即使我的幻燈片放映功能存在,它仍然會拋出我的show_error。Codeigniter function_exists無法正常工作

隨着我的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

任何人都可以問爲什麼投票的理由會很高,知道這樣可以提高。 – user4419336

回答

1

function_exists()作品的功能,但不能類方法 - 這些都是不同的事情。你想要的是method_exists()

method_exists($this, $function); 
+0

謝謝你工作完美。 – user4419336