我想执行一个包含静态函数调用的字符串
$string="ClassName::function()";
让ClassName=ABC&函数=abc
因此
$string="ABC::abc()";
函数abc返回一个数组
现在我想要的是
$array=$string;
它应该执行$string并将返回的数组存储到$array
您可以使用eval
,但使用时要格外小心。
$string = 'Class::function();';
$array = eval($string);
您可以使用这种奇特的构造来避免使用eval
class ABC {
static function abc_func() {
echo 'abc';
}
}
$string="ABC::abc_func()";
$i = preg_split('/::|'(')/', $string);
$i[0]::{$i[1]}(); // abc echoed
试试这个,通过设置类名直接调用静态方法。它是一个变量:
$classname = 'ABC';
$array = $classname::abc();