PHP-有没有办法将已经定义的函数保存在变量中?

斯蒂尼

我对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在PHP中扩展特征?

有没有办法摆脱“。” php中的字符?

有没有办法在php变量中回显?

有没有办法在 curl_setopt url 中包含 php 变量?

有没有办法在PHP中获取Windows环境变量值?

有没有办法在HTML文档(或PHP脚本)中携带变量?

只有当变量满足特定条件时,有没有办法在 php 中重定向?

有没有办法将 javascript 变量用作 PHP SQL 页面的一部分?

php,有没有办法将所有通知/警告变成例外?

有没有办法为 PHP 的超全局变量禁用自动建议?

有没有办法通过div id传递php变量?

有没有办法像定义的那样获取PHP数组的输出

有没有办法混合 CSS 和 PHP?

有没有办法使用php从mysql列中获取注释?

有没有办法在PHP中获得累计百分比

有没有办法从JS或PHP的Google云端硬盘链接中找出MIME类型?

有没有办法从包含 PHP 中的 json 数组的 URL 中提取数据

有没有办法在 php 文件中启用 pdo_mysql?

有没有办法在PHP的mkdir()或chmod()中设置字符串许可模式?

有没有办法在php中获得最多购买的软件包?

有没有办法在PHP / WordPress中托管Axis2服务?

有没有办法在php中为十进制数运行for循环?

有没有办法更改php中的默认链接?

有没有办法在 PHP 中验证 SSH 公钥?

有没有办法在 php 中允许请求 url 中的点?

有没有办法在php中获取类名,将其转换为字符串并将其存储在变量中?

有没有办法转换文本框值并分配给php变量?

有没有办法在不丢失 PHP 中的键的情况下将关联数组的数组分解为一个数组?

有没有办法将角度组件与本机 php 后端(而不是 rest api)进行通信