在PHP中从字符串调用静态方法

时间:2016-03-05 21:08:07

标签: php yii

我试图从字符串Yii::app()->user->id_rol中调用它。所以,我想接受这个字符串然后进行调用。

我试着这样做:

$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 :: $ app() - &gt; user-&gt; id_rol

我怎么能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我认为mnv上面的评论是要走的路。否则,您会冒着代码注入等各种问题的风险。在最糟糕的情况下,如果你真的想这样做,我建议你做以下事情(尽管我写这篇文章很痛苦):

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

那就是说,应该有一个更好的方法来做你想做的事情。 DB提供的代码的来源是什么?你能否以不将代码保存到数据库中的方式重新格式化?