在 PHP 中将对象属性传递到闭包中

2023-12-01

我试图将对象属性传递到闭包中(位于该对象的方法内),如下所示:

class Entity extends ControllerBase {
  private $view;
  private $events;
  public function print($tid) {
    self::loadView($tid);
    self::loopView();
    return (new StreamedResponse(function() use ($this->events){
      ...
    }
  }
}

$events 属性在中实例化loopView()方法。这似乎对我有用,但我收到此错误:

ParseError: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ')' in ...

它似乎在说它不希望有一个对象被引用use。我不知道为什么这是无效的,经过一番谷歌搜索后,我找不到任何涉及我的具体问题的内容。

在 PHP 7.1.7 中,是否可以这样做,如果可以,正确的语法是什么?


你可以只使用$this->events在闭包中没有use陈述。

请参阅“自动绑定$this" in 匿名函数文档.

从 PHP 5.4.0 开始,当在类的上下文中声明时,当前类会自动绑定到它,从而使 $this 在函数的作用域内可用。

例如:https://3v4l.org/gYdHp


至于解析错误的原因,如果我们忽略具体的$this case,

function() use ($object->property) { ...

不起作用,因为use passes 变量从父作用域进入闭包,并且
$object->property不是变量,而是表达式。

如果您需要引用闭包内的对象属性,您需要use整个对象,或者将属性分配给另一个变量,您可以use。但在这种情况下你不必担心,因为$this很特别。

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

在 PHP 中将对象属性传递到闭包中 的相关文章

  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme
  • PHP 有效读取 csv 文件

    有几种使用 PHP 读取 CSV 文件的方法 我以前用过explode函数将每一行放入一个数组中 然后explode逗号并使用trim删除数据周围的任何引号 本来就很乱 PHP 5 现在有fgetcsv和 str getcsv 我猜这是这些
  • 返回变量在 PHP 中不起作用(即没有返回值!)

    我更喜欢使用 Python 语言进行编程 但必须使用 PHP 来处理特定的网站应用程序项目 在 PHP 中 我试图将函数中的值 返回 到主程序环境 用于后续计算 但无论我尝试什么 函数中计算的值都不会返回该值 而是从函数中回显 工作正常 在
  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • 如何从 Laravel 5 中的 Public/Images 文件夹中删除图像(URL 数据)

    如何从 laravel 5 中的 public images 文件夹中删除图像文件 我从这个网站找到了一些例子 但我知道他们只是在他们的文件中使用文件名record table 但我正在使用类似的东西URL e g localhost pr
  • xdebug_start_trace 行为异常

    我正在尝试进一步减少脚本内存使用量 我试图让我的脚本使用 xdebug 生成输出来分析内存使用情况 这是一个基于 CLI 的脚本 有 shebang usr local bin php q 我向它传递一个参数并检查它 argc gt 1 i
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • FPDF - 内嵌粗体文本

    我正在尝试从 PHP 创建 PDF 出于法律原因 我们需要将免责声明的一部分设为粗体 并且需要概述免责声明 我当前的代码使用 if isset POST optout POST optout yes pdf gt Ln 5 pdf gt S
  • 如何从字符串中只获取数字? [复制]

    这个问题在这里已经有答案了 我有这样的字符串 第 001 课 完成 在这种情况下 我只想获取数字部分001 我试过这个 str the title preg match all d str matches number implode ma
  • 使用 php 将 HLS Segment (ts) 视频转换并加入到 mp4

    你好我正在使用这个工具 https github com Ejz HLSDownloader https github com Ejz HLSDownloader将 HLS 视频片段从 m3u8 播放列表下载到 ts 文件中 不 我不知道如
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • URL 重写帮助

    RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php q 1 L 这应该将任何 url 重写为 index php q url 并且它可以工作 反正
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • 在 MySQL 中搜索多个单词

    我使用 HTML 表单来允许用户查找数据库表中的条目
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但

随机推荐

  • 具有 X 和 Y 值对的数据

    是否可以在中使用 X 和 Y 对dataChart js 中用于创建条形图的选项 data 08 09 2016 12 09 09 2016 19 形式为 X Y 我在文档中没有找到任何关于它的参考 我越接近 发现这个折线图示例 data
  • 如何使用 Selenium 和 Java 通过 CSS 选择器以记分牌格式 Web 元素打印击球手的得分

    我想使用 CSS 选择器在 selenium 中打印板球比赛期间所有击球手的得分 所有行都有相同的类名 并且运行位于第三行 因此我使用 CSS 选择器仅选择第三行 但我无法打印运行 这是我的代码 package SomeBasicAutom
  • 短名称仅适用于 C 盘

    我正在尝试在 Windows 上查找路径的短名称 由于某种原因 以下命令仅在 C 驱动器上运行时才有效 for d I in do echo sI 我想要我的 D 驱动器上的文件夹的简称 检查其他驱动器是否启用了 8 3 表示法 http
  • Do...循环直到具有多个条件

    我有一个简单的问题 我在网上没有找到具体信息 我想表演一个Do Loop Until循环 但我想在末尾插入多个条件 我想要做 Do my code Loop Until Condition 1 And Condition 2 And And
  • 更改 Sweave 中 ggplot2 图的大小,而不使文本/数字过大

    我找到了这个question关于更改 Sweave 中 ggplot2 图的大小 我添加了Sweaveopts width 3 height 3 它确实缩小了绘图的大小 但并没有缩小文本 所以最后 轴上的所有数字都会重叠 有没有办法在 Sw
  • 插入的图像未显示在 Google 电子表格中

    当我尝试使用下面的代码在 Google 电子表格中插入图像时 它的工作正常 var activeSheet SpreadsheetApp getActiveSpreadsheet getActiveSheet var image activ
  • 什么是间接扩展? ${!var*} 是什么意思?

    我正在阅读 Bash 初学者指南 它说 如果第一个字符为PARAMETER是一个感叹号 Bash 使用由其余部分形成的变量值PARAMETER作为变量的名称 然后扩展该变量 并在其余替换中使用该值 而不是PARAMETER本身 这称为间接扩
  • 如何解决android studio中无法找到adb(IllegalArgumentException)的问题? [复制]

    这个问题在这里已经有答案了 从 2 2 更新到 2 3 后 我无法使用 android studio 运行我的项目 当我尝试运行我的项目时 我总是收到 无法找到 adb 之类的错误 给我一个正确的解决方案来解决这个问题 我尝试了很多方法但无
  • 两个接口有相同的方法

    Interface A int Add int a int b Interface B int Add int a int b Class D A B int Add int a int b return a b 代码工作正常并且没有产生任
  • 角度 8 中的延迟加载模块

    我有一个仪表板应用程序 我在其中延迟加载小部件 不绑定到路线 我是通过定义一个对象来做到这一点的 name string loadChildren string 然后在我的app module我会做provideRoutes 这将导致 cl
  • 如何将非常大的 CSV 数据集加载到 d3 中

    正如标题所示 我有一个 CSV 文件 250mb 和 700k 行 我无法将其加载到 d3 中 我尝试按照通常加载 csv 文件的方式加载它 但没有成功 目前 它不会出错 并且我在控制台中得到一个空数据数组 不确定文件是否太大或者我加载不正
  • Django,独特的字段生成

    我有一个促销模型 其中包含促销代码和购买模型类的外键 这是模型 class Promotion models Model purchase models ForeignKey Purchase promotion code models C
  • Python sys.getrefcount() 显示意外的第四个引用

    我正在寻找有关为什么我有意外引用计数的解释 是的 我已经知道了sys getrefcount 将增加预期计数1 这不是下面发生的事情 我期待这个功能test a 以显示3 not 4 第四个参考来自哪里 In 2 import sys In
  • 如何使用 Symfony Forms 将事件侦听器添加到动态添加的字段

    我正在使用事件侦听器来动态修改表单 我想向动态添加的字段添加另一个事件侦听器 我不知道如何实现这一点 public function buildForm FormBuilderInterface builder array options
  • 通过 subprocess.Popen 在 python 中执行 R 脚本

    当我在 R 中执行脚本时 它是 R vanilla args test matrix csv lt hierarchical clustering R gt out txt 在Python中 如果我使用 process subprocess
  • Excel 与 SSAS 的连接 - 传输层遇到错误

    我在 SQL 2012 中有一个 SSAS 多维数据集 可以使用 Windows 用户凭据从 Excel 2010 连接到该数据集 而不会出现问题 但是 每当我重新启动托管多维数据集的服务器并尝试刷新 Excel 中的数据透视表 在客户端计
  • WTForms TextAreaField DataRequired 不会在 Bootstrap 模式中引发验证错误

    我在引导模式中有一个非常小的表单 仅包含两个字段 一个 TextAreaField 和一个 Submit 按钮 我的 TextAreField 是所需数据 最重要的是 该字段使用 CKEditor 类似于 quillsJS 来使文本区域所见
  • 解决来自外部不安全服务器的混合内容警告

    我有一个 https 网站 需要显示其他网站的内容 这些网站本身可能是也可能不是 https 不出所料 我在控制台中收到这样的警告消息 混合内容 页面位于 https www example com 我的服务器 通过 HTTPS 加载 但请
  • 转置查询结果集[重复]

    这个问题在这里已经有答案了 所以我有一个包含球员姓名和技能水平的数据库 它看起来像这样 Id Name Level 1 Peter 24 2 Andy 23 24 John 1 列表中等级最高的第一个玩家是最强的 最后一个是最弱的 我需要将
  • 在 PHP 中将对象属性传递到闭包中

    我试图将对象属性传递到闭包中 位于该对象的方法内 如下所示 class Entity extends ControllerBase private view private events public function print tid