2012-03-08 46 views
3

我試圖檢查函數是否存在,但我一直在得到我的錯誤,如果function_exists每次

我嘗試調用這樣的函數,其中$函數是函數名返回false :

if (function_exists($this->module->$function)) 
{ 
    $this->module->$function($vars); 
} 
else 
{ 
    echo 'no'; 
} 

可變module被定義爲類其中函數應該被稱爲:

$this->module = $module; 
$this->module = new $this -> module; 

我在這裏錯過了什麼嗎? 謝謝!

回答

3

簡直弄明白: 使用method_exists()解決我的問題

method_exists($this->module,$function) 

我回答了這個問題對我自己對誰可能有同樣的問題的人!

2

您需要使用method_exists()

if (method_exists($this->module, $function)) { 
    // do stuff 
} 
2

function_exists需要一個函數的名字作爲一個字符串,並沒有類層次的概念。

如果$function是函數的名稱,只需使用此代碼:

if(function_exists($function)) { 
    // Call $function(). 
} 

不過,看你的代碼,它像要檢測是否有物體的方法存在看起來更加。

method_exists取兩個參數,1:要測試的對象,2:要檢測的方法的名稱。

if(method_exists($this->module, $function)) { 
    $this->module->$function($vars); 
} 
1

function_exists()需要一個字符串作爲參數。這將做到這一點:

method_exists($this->module, $function); 

祝你好運!