Php 将类的静态函数存储在变量中

Php 将类的静态函数存储在变量中,php,anonymous-function,Php,Anonymous Function,在PHP中,我有一个类,它接收函数对象并在线程中调用该函数: 它适用于匿名函数,但是,我想将此功能用于不同类的静态函数: $thThread = new FunctionThreader(OtherClass::static_function, $aParams); 这会在第x行抛出一个错误未定义的类常量静态函数 我试过: $fFunction = OtherClass::static_function; $thThread = new FunctionThreader

在PHP中,我有一个类,它接收函数对象并在线程中调用该函数:

它适用于匿名函数,但是,我想将此功能用于不同类的静态函数:

    $thThread = new FunctionThreader(OtherClass::static_function, $aParams);
这会在第x行抛出一个错误
未定义的类常量静态函数

我试过:

    $fFunction = OtherClass::static_function;
    $thThread = new FunctionThreader($fFunction, $aParams);
我得到了同样的错误


那么,是否有任何方法可以将此静态函数存储到
$fFunction
中,或者仅将其作为函数对象引用?

在PHP中,您通常会使用一个:

$callback = array('ClassName', 'methodName');
$thThread = new FunctionThreader($callback, $aParams);

如果
FunctionThreader::\u construct()
只接受
闭包
,并且您对它的实现没有影响,那么您可以将静态函数调用包装在
闭包中

$closure = function() { return ClassName::methodName(); };
$thThread = new FunctionThreader($closure, $aParams);

您可以定义一个lambda函数来调用静态函数。或者简单地将函数名作为字符串存储在该变量中。您还必须为从变量调用函数的类实现处理程序代码

资源:

匿名函数的示例:

<?php 

$function = new function(){
   return forward_static_call_array(['class', 'function'], func_get_args());
};

?>

测试这一点,工作完美无瑕