2010-07-19 30 views
-1

我有幾類具有相同的功能,被稱爲在不同的時間,這取決於不同的變量,

所以我需要的是像

$class = 'test'; 
$return = $class::do_something(); 

,但我得到解析錯誤:解析錯誤,意外的t_paamayim_nekudotayim。

從它的外觀意味着意外::。


更新:
另外,爲什麼直接這樣做我的本地主機,但不是在我的prod服務器上?有沒有php_ini設置?

回答

4

您需要使用一個叫做call_user_func的特殊函數來動態調用類函數。

像這樣:

call_user_func($class . '::do_something'); 

對於參數的功能,你需要使用call_user_func_array

call_user_func_array($class . '::do_something', array($data)); 

要回答你的第二個問題,來調用靜態變量方法的能力classnames只在PHP 5.3.0中添加,這就是爲什麼你的代碼在一臺服務器上工作,而在另一臺服務器上引發錯誤。

+0

以及類看起來像這樣 類測試{ 公共靜態功能do_something($東西){}} 所以什麼人,我會使用?歡呼聲 – Hailwood 2010-07-19 06:19:18

+0

@Hailwood,我編輯了我的答案。 – 2010-07-19 06:20:51

+0

乾杯,即時將這個標記爲公認的答案asap,但你是否也能夠在更新中回答我的問題? – Hailwood 2010-07-19 06:23:01

相關問題