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