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

PHP Execute a string containing static function call

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

$string="ClassName::function()";

让 类名=ABC & 函数=abc
所以

$string="ABC::abc()";

函数abc returns数组

现在我想要的是

$array=$string;

它应该执行 $string 并将返回的数组存储到 $array

您可以使用 eval,但要格外小心。

$string = 'Class::function();';
$array = eval($string);

试试这个,通过设置 class name is a variable 直接调用静态方法:

$classname = 'ABC';
$array = $classname::abc(); 

您可以使用这种奇特的构造来避免使用 eval

class ABC {

  static function abc_func() {
    echo 'abc';
  }
}
$string="ABC::abc_func()";

$i = preg_split('/::|\(\)/', $string);

$i[0]::{$i[1]}();  // abc echoed