【发布时间】:2014-06-11 08:13:46
【问题描述】:
我对谷歌无法真正帮助我的事情感兴趣...
我知道可以使用匿名函数并将函数存储在 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);
这将有一个很大的优势,即当参数没有函数或不存在时抛出异常/致命。
那么简而言之,有没有办法将之前定义的、已经存在的函数或方法存储在变量中?
【问题讨论】:
-
当然我知道它可以做我想做的事,但这是一种寻找更好实施方式的研究。当它不可能时,我当然必须坚持下去。 :P
-
您的第一个定义不是有效的 PHP 代码(因为匿名函数不能有名称)。您的问题归结为可调用的内容 - 如果指向有效的函数名称,则字符串是可调用的。使用
is_callable()使其“安全”
标签: php function variables callback store