PHP 闭包作用域问题

2023-11-22

显然 $pid 超出了这里的范围。难道它不应该与函数一起“关闭”吗?我相当确定这就是闭包在 javascript 中的工作原理。

根据一些文章php 闭包被破坏,所以我无法访问this?

那么怎样才能$pid可以从这个闭包函数访问吗?

class MyClass {
  static function getHdvdsCol($pid) {
    $col = new PointColumn();
    $col->key = $pid;
    $col->parser = function($row) {
        print $pid; // Undefined variable: pid
    };
    return $col;
  }
}

$func = MyClass::getHdvdsCol(45);
call_user_func($func, $row);

Edit我已经通过使用解决了这个问题:$col->parser = function($row) use($pid)。不过我觉得这很丑。


您需要指定应以这种方式关闭哪些变量:

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

PHP 闭包作用域问题 的相关文章

  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 自动递增 bigint 列?

    我想要插入表中的每一行数据都有一个 bigint ID 列 我想要 Sql 服务器生成数字 我尝试创建一个具有 bigint 列 ID 的表 我希望这是自动增量 第一个值为 1 我尝试使用 ID bigint AUTO INCREMENT
  • 将数据从 Props 传递到 vue.js 中的数据

    我有以下 vue 组件
  • 在 Rust 中使用枚举实现动态多态性

    当人们已经知道某些需要动态多态性的代码中涉及的所有有限数量的类型时 使用enum与使用相比 可以更好地提高性能Box因为后者使用动态内存分配 并且您需要使用也具有虚拟函数调用的特征对象 也就是说 与 C 中使用的等效代码相比std vari
  • 如何配置 IIS,以便在连接到 SQL Server 时使用用户的域凭据?

    我们最近发布了最新版本的 Intranet 应用程序 该应用程序现在使用 Windows 身份验证作为标准 并且需要能够使用最终用户的域凭据连接到已配置的 SQL 服务器 最近我们发现 在一些客户部署中 尽管 IIS 可以看到用户的域凭据
  • 是否可以在 .NET 4 中动态创建路由?

    在我们的应用程序中 我们使用新的 NET 4 路由系统将某些请求路由到站点的其他部分 我们只允许在深夜发布我们的网站代码 这意味着我们必须加班到很晚才能发布任何代码更改 我们经常需要创建自定义路由来支持旧内容的旧链接并将其路由到新内容 这些
  • Adobe Media Encoder 是否可以使用 ExtendScript 编写脚本?

    Adobe Media Encoder AME 是否可以编写脚本 我听人们提到它是 官方可编写脚本的 但我找不到任何对其可编写脚本的对象集的引用 有人有编写 AME 脚本的经验吗 Adobe 媒体编码器 正式 不可编写脚本 但我们可以使用扩
  • Windows 窗体:如何更改禁用标签的字体颜色

    我正在尝试为标签控件设置禁用的字体特征 我可以设置所有字体特征 大小 粗体等 但颜色被默认的窗口行为覆盖 这似乎是这两种颜色之一 如果背景颜色是透明的 则前景色与文本框禁用颜色相同 如果背景颜色设置为其他颜色 则前景色为深灰色 下图演示了该
  • SQLAlchemy:将查询结果插入到另一个表中

    所以我得到了一些结果install表 像这样 install metadata tables install results session query install
  • Activiti / Camunda 用变量改变边界计时器

    我有一个关于 Activiti Camunda 中用户任务的计时器边界事件的特殊问题 启动流程时 我使用流程变量设置计时器持续时间 并使用边界定义中的表达式来解析该变量 边界事件是在用户任务上定义的
  • Javascript - .innerHTML 更改自动关闭标签

    我正在尝试使用 Javascript 动态地将元素放入其他元素中 而无需刷新页面 它的 AJAX 部分可以工作并且功能正常 然而 由于某种未知的原因 我的代码自动关闭 这是代码片段 您可以看到它实际上并未关闭 但是在浏览器中运行代码后它被关
  • 使用 iOS 的 ExtAudioFileWrite 将音频样本缓冲区写入 aac 文件

    更新 我已经弄清楚了这一点并发布了我的解决方案作为我自己的问题的答案 如下 我正在尝试使用 AAC 格式的 ExtAudioFileWrite 将简单的音频样本缓冲区写入文件 我已经通过下面的代码实现了这一点 将单声道缓冲区写入 wav 文
  • 如何向 HTTP 客户端传递客户端证书?

    我想在服务 A 和 B 之间使用相互 SSL 身份验证 我目前正在使用 Java 实现从服务 A 传递客户端证书 我正在使用 Apache DefaultHttpClient 来执行我的请求 我能够从内部凭证管理器检索服务 A 的客户端证书
  • 我可以使用 CGAffineTransform Rotation 将视图旋转超过 360 度吗?

    我正在编写一个 iPhone 应用程序 并且我有一张图像 我想将其向外旋转 目前我的代码如下所示 包装在 beginAnimations commitAnimations 块中 scale CGAffineTransformScale CG
  • 经典 ASP - ADO 执行传递参数的存储过程

    我需要使用经典 ASP 将参数传递到存储过程中 我确实看到有些人使用 Command 对象 而其他人则不使用它 我的存储过程参数是这样的 RECORD NUMBER decimal 18 0 ErrorType nvarchar 100 I
  • 如何让 Cobertura 因代码覆盖率低而导致 M2 构建失败

    如果行或分支覆盖率低于给定阈值 我正在尝试将 WAR 项目构建配置为失败 我一直在使用这本优秀书籍第455页提供的配置Java电动工具 但没有成功 这是我的项目 Maven 2 POM 的相关片段
  • 从长度为 N 的数组中返回前 k 个值的最佳算法

    我有一个包含 n 个浮点的数组 我希望返回前 k 个 在我的例子中 n 100 k 10 该问题是否有已知的最佳解决路径 谁能提供一个C算法吗 编辑 实际上这里有两个问题 排序和未排序 我对未排序感兴趣 这应该更快 Method 1 由于k
  • 计算给定角度和长度的向量

    有没有什么办法 在javascript中 我可以调用一个带有x和y坐标以及方向 以度为单位的角度 的函数 并且它将返回一组已 移动 10px的新坐标按照原始坐标给出的方向 我环顾四周 但我所能找到的只是获得两个给定坐标的角度的方法 该函数返
  • 如何在 Firebase Firestore Android 发生更改时实现通知?

    有两种类型的应用程序 一种由用户使用 另一种由我 即所有者 使用 因此 每当任何用户将内容 数据 添加到 Cloud Firestore 数据库时 我都希望收到通知 简而言之 如何在 Cloud Firestore 数据库发生更改时发送通知
  • 覆盖maven中第三方jar的依赖

    像这样org carrot2取决于commons httpclient 3 1那么我该如何改变这个commons httpclient 3 1 to HttpClient 4 1 1 我正在日食中工作 正如我想删除的commons http
  • PHP 闭包作用域问题

    显然 pid 超出了这里的范围 难道它不应该与函数一起 关闭 吗 我相当确定这就是闭包在 javascript 中的工作原理 根据一些文章php 闭包被破坏 所以我无法访问this 那么怎样才能 pid可以从这个闭包函数访问吗 class