在 PHP 中的匿名函数中访问对象的私有/受保护属性

2023-11-23

我正在尝试通过匿名函数转储对象私有属性的元素 - 当然我可以通过许多其他方式实现这一点,但这突出了一个我无法立即解决的 PHP 难题,除了$foo = $this 并使用 $foo - 但这不会给我私人的东西,所以......建议?

示例代码:

class MyClass
{
    private $payload = Array( 'a' => 'A element', 'b' => 'B element');

    static $csvOrder = Array('b','a');

    public function toCSV(){
        $values = array_map(
            function($name) use ($this) { return $this->payload[$name]; },  
            self::$csvOrder
        );
        return implode(',',$values);
    }
}

$mc = new MyClass();
print $mc->toCSV();

我相信绝对没有办法直接按照你的建议去做。

但是,您可以通过将匿名方法设置为类方法(这不是您所要求的,但它可能是一个实用的解决方案)或从其中提取您需要的所有内容来解决此问题$this显式并将提取的值传递到函数中:

class MyClass
{
    private $payload = Array( 'a' => 'A element', 'b' => 'B element');

    static $csvOrder = Array('b','a');

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

在 PHP 中的匿名函数中访问对象的私有/受保护属性 的相关文章

  • 清理货币字符串的快速方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 取消货币格式 https stackoverflow com questions 5139793 php unformat money 如何去掉所有不是数字或点的东西 替换 with 使用轻正
  • PHP MySQL 仅当 IP 是新时才更新列

    我试图让我的脚本在每次 IP 出现新值时将观看次数更新 1 604800秒后 如果同一用户 同一IP 在604800秒后再次回来 则查看计数 1 有人可以帮我吗 Get video id id GET id Get video title
  • php、curl、标题和内容类型

    我在处理服务器返回的curl 和标头时遇到一些问题 1 my website com index php 上的 php 文件如下所示 修剪版本 my content
  • 在运行时修改方法/函数

    我一直在研究 php 反射方法 我想做的是在方法打开之后和任何返回值之前注入一些代码 例如我想更改 function foo bar foo bar return foo 并向其中注入一些代码 例如 function foo bar som
  • 获取URL查询字符串参数

    从格式如下的 URL 查询字符串获取参数的 所需代码较少 的方法是什么 www mysite com category subcategory myqueryhash 输出应该是 myqueryhash 我知道这种方法 www mysite
  • 从 PHP PDO 执行时 MySQL 提交是否同步?

    使用 MySQL 的 PHP PDO 接口 假设我有以下代码来结束事务 假设它已正确开始 pdo gt query commit 当函数返回时 对日志的写入是否已刷新 也就是说 事务是否已提交 或者我只是提出了提交请求 假设我没有设置任何延
  • 解析xml文件时获取cdata内容

    我有一个 xml 文件
  • ZF2 路线参数带斜杠

    是否可以使用包含正斜杠的参数来组装路由 Config someroute gt array type gt Zend Mvc Router Http Segment options gt array route gt someroute p
  • PHP - 按后退按钮时 Session_Destroy

    这是我的问题 我有一个名为login php 的登录页面 不包含HTML 代码 当用户正确输入其凭据时 他会被重定向到特定页面 在本例中我们将使用 test php 该页面上的唯一链接会注销当前会话 并将用户返回到index html 我的
  • 如何在特定视图上禁用 yii-debug-toolbar?

    我怎样才能禁用yii debug toolbar在特定视图上 特别是在部分渲染视图上 这可能吗 p s Yii debug toolbar不幸的是 它不作为下面的标签存在 将其放入您的布局或视图文件中 if class exists yii
  • 将字符串转换为关联数组键?

    给定一个包含由点分隔的值的字符串 property entry item 将其转换为关联数组的键的最佳方法是什么 result imported data property entry item 该字符串可以是任意长度 任意数量的点并包含一
  • 在 CGI 模式下运行时如何覆盖 PHP 配置

    有一些教程告诉我如何在 CGI 模式下运行时覆盖 PHP 配置 但我仍然很困惑 因为很多人都认为服务器运行在 Linux 上 虽然我需要这样做also在 Windows 上 我的主机确实使用 Linux 但我的本地开发计算机使用 Windo
  • 如何在 PHP 中获取用户代理

    我使用这个 JS 代码来了解用户使用的浏览器 我想将此 navigator appName 获取到 php 代码以像这样使用它 if appName Internet Explorer blabla 我该怎么做 使用原生 PHP SERVE
  • Laravel 4 中如何知道查询是否失败?

    我将 Laravel 4 与 MySQL 结合使用 我想知道如何控制在数据库中插入 更新或删除记录时可能出现的错误 例如 如果我进行如下更新 DB table user gt where id id gt update userdata 我
  • 以编程方式将礼品消息设置为现有订单[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找一些代码 以便在 Mage
  • 这是重载,不同类中具有相同名称和不同签名的方法吗?

    如果我有以下 Java 代码 class A public int add int a int b return a b class B extends A public float add float a float b return a
  • 人类可读的 JSON:又名向 json 转储添加空格和换行符

    是否有一个 简单 脚本可以获取 json 数据并对其进行格式化以使其更具可读性 例如 response is a json encoded string var dump response 上面的内容在一行上输出所有内容 我希望将其缩进并加
  • 如何从视图中使用模型函数? - 拉拉维尔 5.4

    我在模型类中创建了一个函数 它是 public function scopetest query return query gt pluck name 我的控制器代码是 public function index books Book al
  • Eclipse 和 Zend 调试器总是在第一行中断,尽管未选中该选项

    我取消选中了在第一行中断PHP 调试配置中的选项 但无论如何它仍然在第一行中断 我怎样才能防止这种情况发生 我正在使用 MacOSX Eclipse PDT 3 0 2 和 Zend 调试器 经过大量谷歌搜索后 我找到了如何解决这个问题 可
  • json支持阿拉伯字符吗?

    我想问一个简单的问题 json 是否支持阿拉伯字符 我的意思是当我搜索类似以下内容时 values database gt get by name echo json encode array returnedFromValue gt va

随机推荐

  • 带有 ViewPager2 的 BottomSheetBehavior 无法通过嵌套的 RecyclerView 滚动向下滚动

    我有一个类似的观点BottomSheet行为这个视图有ViewPager2里面 每个ViewPager2的页面都是一个垂直的RecyclerView 问题是 当当前垂直 RecyclerView ViewPager 的页面 无法再垂直滚动时
  • 在 swift4.1 中将 Any 转换为 Float 总是失败

    在以前的版本中 要从 a 获取浮点值 String Any 字典 我可以用let float dict somekey as Float 但是在swift4 1中 不起作用 似乎是这样的类型dict somekey 已被隐含地推断为Doub
  • 如何从 SqlDataReader 解析 Nullable

    DateTime TryParse 方法采用 DateTime 作为参数 而不是 DateTime 现在我有以下代码 if DateTime TryParse reader Placed ToString out placed throw
  • 在 Windows Kafka 上删除主题时出现 AccessDeniedException

    我刚刚在我的 Windows 机器上安装了 Kafka 来自 Confluence Platform 我启动了 Zookeeper 和 Kafka 并创建主题 生产和消费它们的工作 然而 一旦我删除一个主题 Kafka 就会崩溃 如下所示
  • 如何避免 Selenium 中的 StaleElementReferenceException - Python

    我陷入了编写 Python Selenium 脚本的困境 似乎无法令人满意地解决我收到的这个 StaleElementReferenceException 我已加载页面并单击一个按钮 该按钮将打开一个表单 允许用户向订单添加新的信用卡 此时
  • 如何用java转换巨大的xml文件?

    正如标题所说 我有一个巨大的 xml 文件 GB
  • Angularjs 后接收钩子或类似的?

    有没有一种方法可以在每次从服务器返回响应后调用一个函数 而无需在回调中显式调用它 主要目的是我确实有一个通用错误处理程序服务 我在每个请求的回调中调用它 并且我想在某处指定它并且它应该被自动调用 我给了Gloopy一个 1的解决方案 但是
  • 如何冻结无法冻结的可冻结对象

    在我的场景中 我想先冻结不变的 BitmapCacheBrush 然后再在后台任务中渲染它 不幸的是 我收到错误 此 Freezable 无法冻结 是否有任何解决方法或黑客方法冻结也不可冻结的对象 也许可以通过反射设置正确的属性来达到这个目
  • jQuery UI 日期选择器不会显示 - 包含完整代码

    我在显示 jQuery 日期选择器时遇到问题 如下所示 http jqueryui com demos datepicker 我相信我下载了所有正确的文件 但可以肯定的是 我从头开始并破解了演示网站 不是全部 而是我认为重要的部分 结果是没
  • 将 Bitbucket 部署到 Azure 网站:添加私有 nuget 包服务器

    我已经在 Azure 上建立了一个网站 通过 Bitbucket 存储库进行部署 当尝试安装存储在私有 nuget 服务器 而不是 nuget org 上 的 nuget 包时 该过程会失败 有没有办法指定从何处还原 nuget 包 以便
  • 如果活动崩溃,如何清除通知?

    在我的应用程序中 我正在创建一个带有 FLAG ONGOING EVENT 标志设置的通知 Notification notification new Notification iconId text System currentTimeM
  • 在某些代理关闭后如何更改主题领导者或删除分区?

    我们有一个带有 4 个代理的 kafka 集群 以及一些具有副本因子 1 和 10 分区的主题 某一时刻 我们的 4 台服务器中的 2 台与 kafka 集群发生故障 现在我们有 2 个具有相同主题的经纪人 当我运行命令时 kafka to
  • 将 Mercurial 变更集作为版本信息注入 C 可执行文件中

    我希望我正在开发的项目的可执行文件能够记录最新的 Mercurial 变更集 以便当用户抱怨错误行为时 我可以跟踪他们正在使用的版本 我的一些可执行文件是 Python 的 其他是 C 编译的 有没有办法自动执行此操作 或者您能给我指出一些
  • Python numpy数据指针地址变化无需修改

    EDIT 经过一番摆弄后 到目前为止我已经隔离了以下状态 A 1D array gives two直接输入变量时的地址不同 并且仅one使用时print A 2D array or matrix gives three直接输入变量时的不同地
  • 限制 UISlider 滑动超过某个点

    我们假设 a 有一个UISlider我为其设置了一定的值 然后 滑块手柄会按预期移动到该值 现在我想让用户来回滑动滑块的手柄 但不设置UISlider比我以编程方式分配给它的要少 例如我有一个UISlider最小值为 0 最大值为 100
  • 我可以保护我的 CRON 脚本免受远程用户的攻击吗?

    我目前正在开发一个涉及使用 CRON 作业的新项目 CRON 脚本基本上运行 SQL 查询 将数据生成到文件中 然后通过 FTP 将该文件发送到另一台服务器 该脚本位于实时网站 www website com sendOrders php
  • Stream.Copy 是否通过管道传输?

    假设我正在编写一个tcp代理代码 我正在从传入流中读取并写入输出流 我知道 Stream Copy 使用缓冲区 但我的问题是 Stream Copy 方法是否在从输入流获取下一个块的同时写入输出流 还是像 从输入读取块 将块写入输出 从输入
  • 泽西岛 (REST) 子资源 CDI

    我正在开发一个企业项目 该项目有一个 EJB 模块和一个在 GlassFish v3 1 Weld v1 1 和 Jersey 上运行的 Web 项目 在EJB中我定义了一个实体类Manufacturer并生成了一个会话外观Manufact
  • 计算 yii2 中表中的所有记录,无需使用 where 子句

    我想计算表中的所有记录而不指定任何条件 现在 我正在这样做 result cms Cms find gt where gt count 它会给我结果 但我不想使用where clause 那么如何统计所有记录而不需要where 子句 谢谢
  • 在 PHP 中的匿名函数中访问对象的私有/受保护属性

    我正在尝试通过匿名函数转储对象私有属性的元素 当然我可以通过许多其他方式实现这一点 但这突出了一个我无法立即解决的 PHP 难题 除了 foo this 并使用 foo 但这不会给我私人的东西 所以 建议 示例代码 class MyClas