我对Google无法真正帮助我的事情感兴趣...
我知道可以使用匿名函数,也可以将函数存储在PHP这样的变量中
$function = function myFoo() { echo "bar"; }
并使用变量进行调用: $function();
到目前为止一切都很好,但是如果我在某处声明了一个函数或方法但在初始化时没有保存该怎么办?
我有一个期望可调用的函数,当然call_user_func()
可以在这里为我提供帮助,但是我需要在我的回调处理程序中传递方法名称,我认为这是非常不安全的,因为在当前添加回调的过程中,我无法说出它是否确实是函数,当我存储它时存在。
因此,我想实现以下功能:
该功能:
function anyFunction() {
echo "doWhatever...!";
}
应该在以后的某个时间点保存在变量中:
$myOtherFunction = get_registered_func("anyFunction");
我知道get_registered_func()
不存在,但我想知道这是否有可能!
有了这个我现在可以有另一个功能
function setCallback(callable $theCallbackFunction) { }
并像这样使用它:
setCallback($myOtherFunction);
这将具有很大的优势,即当参数为无函数或不存在时,抛出异常/致命错误。
简而言之,是否有一种方法可以将先前定义的,已经存在的函数或方法存储在变量中?
PHP的callable
元类型可以是:
只有后者是“类型安全”的,即,如果您获得一个匿名函数,则可以调用它。另外两个选项仅仅是形式化的非正式标准(如果有意义),这些标准由一些接受回调的函数所支持。他们实际上不是一个类型在PHP中的类型系统。因此,基本上不能保证您可以做到。
您只能通过在执行执行操作之前检查所callable
获得的对象是否可调用来解决此问题is_callable
。您可以将其包装到您自己的类中,例如,以实际创建一个真正的可调用类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句