2015-10-18 121 views
0

我試着打電話給這樣的非靜態方法:調用非靜態方法動態

call_user_func_array(array("Notifications", "getNots"), $params) 

我得到了錯誤: call_user_func()預計參數1是一個有效的回調,非靜態方法...

的功能是:

class Notifications { 
    public function getNots($limit, $test = 0) { 
    } 
} 

怎麼辦?

其實我試圖建立功能得到 html頁面的HTML代碼,並取代所有文字那樣:

{{ Notifications.getNotes(3) }} 

到方法的返回......

TNX很多

+0

你試過這個:$ notifications = new Notifications(); call_user_func_array(array($ notifications,「getNots」),$ params)); – Thesee

+0

我從另一個對象這樣得到了對象: 對象模板 - >變量對象通知 – kfir91

回答

0

要用一個非靜態函數做這件事,你需要實例化一個Notification對象(如果沒有完成,然後將它傳遞到call_user_func_array()中作爲回調數組中的第一個值,如下所示:

$notifications = new Notification(); 
call_user_func_array(array($notifications, "getNots"), $params); 

如果已經實例化,則傳遞該實例,而不是類名稱。

+0

爲什麼使用'call_user_func_array'? – DarkBee

+0

你必須要問原始的海報。當我需要調用一組方法時,我會使用這種情況,並且所調用的具體方法取決於某些先前的用戶輸入。在這種情況下,可以比添加一個開關或一組if條件更簡單。 – Focorunner