Php 在Yii2中作为静态类函数运行字符串
我收到的函数是字符串,如下所示:Php 在Yii2中作为静态类函数运行字符串,php,yii,yii2,Php,Yii,Yii2,我收到的函数是字符串,如下所示: "\app\models\AddrModel::getText('A_00001724');" 现在我需要将这个字符串转换并作为静态函数调用运行,以检索A_00001724id的值 我该怎么做? PS:当我把它称为$value=new$function时我明白了 Class '\app\models\AddrModel::getText('A_00001724')' not found 因为这不仅仅是课堂。它是一个类为://p>eval()的静态函数,可用于
"\app\models\AddrModel::getText('A_00001724');"
现在我需要将这个字符串转换并作为静态函数调用运行,以检索A_00001724
id的值
我该怎么做?
PS:当我把它称为$value=new$function时代码>我明白了
Class '\app\models\AddrModel::getText('A_00001724')' not found
因为这不仅仅是课堂。它是一个类为://p>eval()的静态函数,可用于以字符串形式执行php代码。如果执行的代码返回值,则Eval()返回值
因此,在上述情况下:
$func = "\app\models\AddrModel::getText('A_00001724');";
$value = eval('return ' . $func);
print_r($value);
$value=eval('return')“\app\models\AddrModel::getText('A_00001724');”)如何?@Mat我检查了文档,eval
不返回任何值,因此这对我不起作用。如果eval代码返回值,eval会返回值。我的测试用例是:$func=“sprintf(“%s%s”、“hello”、“world”);”$value=eval('return'.$func);打印($value);//回声“你好,世界”
是的,谢谢。我还找到了相同的解决方案:$value=eval('return'.$function'.;')代码>。你应该把它作为答案,这样我就可以接受了。请注意,eval
在某些情况下有点风险,因此请确保在使用之前检查并验证$function
值。不用说eval是一个非常糟糕的主意,也许你应该改变解决问题的方法