PHP执行包含静态函数调用的字符串


PHP Execute a string containing static function call

我想执行一个包含静态函数调用的字符串

$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();