在 PHP 的类属性中存储闭包函数

2023-11-21

好的,我有下面的代码

<?php
    class foo{
       public $bar = NULL;

       public function boo(){
          $this->bar();
       }
    }

    $mee = new foo();

    //save a closure function on the property
    $mee->bar = function(){
        echo 'hahaha';
    };

    //invoke the closure function by using a class method
    $mee->boo();
?>

你可以看到它在这里运行http://codepad.org/s1jhi7cv

现在我想要的是将闭包函数存储在类方法上。

当我在这里阅读有关它的文档时,井关闭是可能的http://php.net/manual/en/functions.anonymous.php

这可能吗?我是不是做错了什么?请纠正我


您在 codepad.org 上的示例代码不起作用,因为 codepad.org 使用 PHP 5.2.5,并且仅在 5.3 中添加了闭包支持。

但是,您的代码也无法在支持闭包的 PHP 版本中运行,尽管您会收到不同的错误:http://codepad.viper-7.com/Ob0bH5

这是目前 PHP 的一个限制。$obj->member()寻找名为的方法member并且不会查看属性来查看它们是否可调用。坦率地说,这很烦人。

我所知道的唯一方法是让这项工作无需call_user_func()/call_user_func_array() is:

public function boo() {
   $func = $this->bar;
   $func();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 的类属性中存储闭包函数 的相关文章

  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • XP及PHP MYSQL 练级系统

    我已经查看了所有提出的问题和答案 但我似乎找不到最适合我的答案 我想做的是开发一个系统 当用户达到一定的 XP 限制时 系统会进入下一个级别 它显示了下一个 XP 之前需要多少 XP So lvl1 0 gt lvl2 256 gt lvl
  • WordPress 安装中发现的恶意 PHP 代码有什么作用?

    我能够解码在一些 WordPress 文件中找到的以下 PHP 脚本 只是出于好奇 有人可以告诉我这段代码实际上是做什么的吗 看起来它已经以某种方式复制到同一服务器上的其他 WordPress 安装中
  • 在 Drupal 中选择性地删除页面的样式表

    我正在尝试为首页制作不同的布局 在此过程中 我声明了名为 front page css 和 page front tpl php 的新样式表 我正在使用加载responsive sidebar css 的 Zen 子主题 我想删除 resp
  • 如何在 PHP 中将默认日期设置为波斯日期?

    如何在 PHP 中将默认日期设置为波斯日期 说吧 如果我echo这个功能date Y m d 然后它会显示2018 03 05但我想要1396 12 14波斯日期 请检查 http php net manual en intldatefor
  • 从目录中读取所有文件内容 - php

    这实际上是一个简单的任务 我想显示指定文件夹中所有文件的内容 我正在传递目录名称 echo a href row qname a 在第二页上 我正在迭代目录内容 while entryname readdir myDirectory if
  • PHP 从日志事件中获取行号

    好的 我还有一个问题HERE https stackoverflow com questions 3213423 php how could i make this class better suggestions feedback wel
  • 来自另一个类的 Qt C++ GUI 调用

    我通过 gui 拖放创建了一个按钮和一个文本浏览器 UI 以及单击按钮功能是在 mainwindow cpp 中创建的 有一个 main cpp 但这是无关紧要的 因为在单击开始按钮之前程序不会启动 include mainwindow h
  • 用PHP动态生成二维码[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的网站上生成二维码 他们所要做的就是在其中包含一个 URL 我网站上的变量将提供该 URL
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • 内联还有用吗? [复制]

    这个问题在这里已经有答案了 我相信 inline已经过时了 因为我读过here https isocpp org wiki faq inline functions 无论您如何将函数指定为inline 这是允许编译器忽略的请求 编译器可能会
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • PHP别名@函数

    我是 PHP 新手 看到一些使用 前缀调用函数 如 mysql ping 的示例 我感到很困惑 它是做什么用的 谷歌搜索 搜索没有太大帮助 因为 被丢弃并且 别名 不是足够好的关键字 抑制错误 警告和通知 如果你用自定义的方式补充它 你可以
  • Laravel 类邮件程序不存在

    我将应用程序从 5 更新到 5 2 现在 当我调用 Mail send 时 它会返回一个异常 Class mailer 不存在 Mail send emails mail data gt content function m use to
  • 使用 IntlDateFormatter 转换非公历日期

    我应该如何使用将非公历日期转换为其他日历类型IntlDateFormatter 我要转换 1392 01 02 from persian to islamic日历 我尝试了以下代码 但它没有转换日历 formatter IntlDateFo
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 如何使用xquery查找节点并向其添加子节点?

    是否可以使用xpath xquery查询特定的xml节点 然后向其导入 添加子节点 示例 代码取自http codepad org gJ1Y2LjM http codepad org gJ1Y2LjM 这是在类似的问题中提出的 但不相同 1
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • SimpleXML插入处理指令(样式表)

    我想集成一个XSL文件在一个XML给我的字符串php CURL命令 我试过这个 output XML gived me by curl option hotel simplexml load string output hotel gt a

随机推荐

  • 如何通过 FileWriter 设置 BufferedWriter 上的缓冲区大小

    我遇到了一个问题BufferedWriter当我使用一些线程将数据写入单个文件时 我设置了缓冲区大小BufferedWriter 但是无论我设置什么数字 当缓冲区为8192 默认缓冲区大小 时 它会将数据刷新到磁盘 而不是我设置的大小 这里
  • 使用 AXIS2 创建的 ADB 存根在客户端获取原始 XML SOAP 响应

    我使用 AXIS2 创建的 ADB 存根访问 SOAP 服务 我想记录服务返回的任何轴故障的原始 XML 响应 我可以将这些错误捕获为 ServiceError 但是 我没有找到检索原始 XML 的方法 请参见下面的示例 我找到了一种使用
  • Google Api Php 客户端的刷新令牌

    我正在使用 Google API 客户端访问 Google Analytics 我想以离线模式访问数据 所以我需要刷新令牌 如何获取刷新令牌 尝试使用以下代码
  • 多线程比单线程慢

    我有以下代码 控制台应用程序 Program cs 的完整内容 单线程执行 countUp 到 countUp4 需要 13 秒 多线程执行需要 21 秒 我有 Intel Core i5 2400 3 10 GHz 8 GB RAM Wi
  • 在 FastAPI 中从根目录提供静态文件

    我正在尝试让 FastAPI 与 Svelte 一起工作 我已经使用 Svelte 构建了静态文件 现在我尝试通过 FastAPI 提供它们 问题是构建的 Svelte 文件引用了例如global css从根目录 这意味着我不能将它们安装在
  • 在java中通过ref传递枚举

    如何在java中通过引用传递枚举参数 有什么解决办法吗 Java 总是按值传递 您传递引用 而不是对象 引用是按值传递的 您可以更改引用在传入的函数中指向的可变对象的状态 但不能更改引用本身
  • 如何在 Django/Python Web 应用程序中使用 Trac wiki 格式?

    我有一个 Python Web 应用程序 特别是 Django 我正在从 Trac 数据库中读取一些数据 其中的描述使用维基格式 并将其显示为 HTML 我考虑过 markdown 模块 但意识到 Trac wiki 格式和 markdow
  • 在 Symfony2 中异步调用命令

    我想从 Symfony2 的控制器中异步调用命令 到目前为止我找到了以下解决方案 cmd this gt get kernel gt getRootDir console new MLCJobWorkerCommand gt getName
  • 如何给tomcat设置IP地址? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个 Tomcat 服务器 其中 war文件正在运行 我可以运行 war打字时文件本地主机 8080 在浏览器中 但我必须通过网络访问这个 war 文件 所以我有一个外部IP
  • 使用 matplotlib 显示图像序列

    我有一个简单的 python 脚本 使用 OpenCV 从文件夹加载图像并循环显示它们 我想使用重现这种效果matplotlib import cv2 as cv import os im files for f in os listdir
  • 在tomcat中绑定JNDI数据源?

    是否可以通过编程方式将数据源绑定到 Tomcat 6 JNDI 我想动态创建一个数据源 然后通过 JNDI 使其可用 例如 ColdFusion 这就是我所拥有的 public void bindToConext DataSource da
  • “找不到 Python 可执行文件...” - npm install 挂起

    我正在使用 npm install 下载并编译我编写的小型 Node js 应用程序的所有依赖项 我正在使用的 package json 文件是正确的并且包含所有需要的信息 要安装的软件包之一具有 node gyp 作为依赖项 因此我之前安
  • Spring Boot webjars:无法通过 webjar 加载 javascript 库

    我有一个 Spring Boot 我使用 Thymeleaf 进行模板化 项目 我想在其中使用一些 jQuery 库 不幸的是 webjar 根本没有加载 我尝试了很多配置 但都失败了 这是我的 HTML 页面的代码片段
  • 如何删除 VSTS 中的共享步骤

    我正在尝试以编程方式删除共享步骤 我正在尝试导出 导入 并且正在生成大量步骤 并且希望能够删除它们 而不是手动删除 一次一个 与所有 隐藏 类别工作项类型一样 无法使用删除工作项 API 删除共享步骤 测试用例 测试计划和测试套件都有特殊的
  • 使用 Docker 驱动程序启动 Minikube 并将其绑定到主机网络

    我想知道是否可以将我的 minikube 网络绑定到我的host网络 I tried minikube start memory 10000 cpus 4 vm driver docker kubernetes version v1 19
  • LinkedIn OAuth2 授权服务器遇到意外情况

    对于一些尝试通过移动设备在 Web 视图中链接的 OAuth2 API 进行身份验证的用户 我们遇到了这个奇怪的错误 https www linkedin com uas oauth2 authorization response type
  • 尝试运行 npm install 或yarn 时出现 Zlib 错误

    我刚刚从 GitHub 上的库中提取了一些内容 我正在使用 Windows 计算机在 VSCode 中进行编码 代码没有问题 尽管当我尝试运行 npm install 或yarn install 来获取node modules 和yarn
  • 从 HTML 中过滤 JavaScript

    我有一个富文本编辑器 可以将 HTML 传递到服务器 然后该 HTML 会显示给其他用户 我想确保该 HTML 中没有 JavaScript 有什么办法可以做到这一点吗 另外 如果有帮助的话 我正在使用 ASP NET 唯一的方法是ensu
  • 将Lua嵌入到C++中

    我想编写一个可以在执行期间交互 调用 Lua 脚本的 C 程序 该程序的一个关键概念是完全的平台独立性 但我似乎无法找到真正提供这种功能的 Lua 构建 到目前为止我发现的 Lua 构建要么基于环境变量 要么基于特定的库 例如 lib dl
  • 在 PHP 的类属性中存储闭包函数

    好的 我有下面的代码 你可以看到它在这里运行http co