2016-03-05 73 views
1

我試圖從字符串Yii::app()->user->id_rol調用此方法。所以,我想要接這個字符串然後再打電話。從PHP中的字符串調用靜態方法

我試着這樣做:

$class = "Yii::app()->user->id_rol"; 
$class = explode('::',$class); 
$class[1] = explode('->',$class[1]); 

$class2 = new $class[0]; 
$string = ""; 
$n = count($class[1]); 
for($i = 0; $i<$n;$i++){ 
(($i+1) == $n) ? $fl = '' : $fl = '->'; 
$string .= $class[1][$i].$fl; 
} 

$model = $class2->$string; 

...但是,這是行不通的。

未定義的屬性:的Yii :: $應用程序() - >用戶> id_rol

我怎麼可能使它工作?

+0

你究竟想要完成什麼,更大的圖片,在這裏? –

+0

我試圖指定VAR名稱來接收rol id在我的新模塊參數,像這'評估'=>數組( \t \t'id_rol'=>'Yii :: app() - > user-> id_rol', \t \t), 所以,我需要把這個文字字符串作爲變量 –

+0

'$ prop ='id_rol';警予::應用程序() - >用戶 - > $ prop'? – mnv

回答

0

我覺得上面的mnv的評論是要走的路。否則,你冒着代碼注入和其他問題的風險。在最壞的情況下,如果你真的想這樣做,我建議做以下(就像它的痛苦,我寫這篇文章):

$code = "return {$VARIABLE_FROM_DB};"; 
$value = eval($code); 

也就是說,應該有更好的方式做你正在努力做什麼整體。數據庫提供的代碼的來源是什麼?你可以重新格式化它,而不是將代碼保存到數據庫中?

相關問題