为什么 var_dump 可以确定私有变量的值,但在尝试访问单个属性时却不能

2023-12-02

我有一个对象被扔到会话数组中,我想运行 foreach 在 items 属性上。

我似乎无法访问它。我看到它是私有的,但我忍不住想知道为什么 var_dump 可以向我显示该属性包含的内容,但我无法读取数据,因为它会引发致命错误?

我想如果我真的需要的话,我可以做一些输出缓冲并将 var_dump 评估为字符串this但似乎应该有更好的方法。我有什么想法可以访问_items吗?

var_dumped 的目标代码var_dump($_SESSION['PHPurchaseCart']):

object(PHPurchaseCart)#191 (4) {
  ["_items:private"]=>
  array(2) {
    [0]=>
    object(PHPurchaseCartItem)#190 (6) {
      ["_productId:private"]=>
      string(2) "80"
      ["_quantity:private"]=>
      int(1)
      ["_optionInfo:private"]=>
      string(20) "Monthly Sponsorship "
      ["_priceDifference:private"]=>
      string(3) ".01"
      ["_customFieldInfo:private"]=>
      NULL
      ["_formEntryIds:private"]=>
      array(0) {
      }
    }
    [1]=>
    object(PHPurchaseCartItem)#189 (6) {
      ["_productId:private"]=>
      string(2) "75"
      ["_quantity:private"]=>
      int(1)
      ["_optionInfo:private"]=>
      string(20) "Monthly Sponsorship "
      ["_priceDifference:private"]=>
      string(3) ".02"
      ["_customFieldInfo:private"]=>
      NULL
      ["_formEntryIds:private"]=>
      array(0) {
      }
    }
  }
  ["_promotion:private"]=>
  NULL
  ["_promoStatus:private"]=>
  int(0)
  ["_shippingMethodId:private"]=>
  NULL
}

我尝试访问它的方式:

$fun = $_SESSION['PHPurchaseCart'];
var_dump($fun->_items);
exit;

上面抛出了一个致命错误。


这就是私有财产的概念:你无法访问它们。你真的不应该打破这个概念。如果您确实想访问此类属性,请在原始类定义中将其标记为“public”。

var_dump之所以可以访问它,是因为它是一个内部函数,它有查看整个对象的“权力”。但是,您的代码没有这种能力。

我不推荐它,但如果你确实需要访问私有财产,你可以使用PHP 反射来实现它。

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

为什么 var_dump 可以确定私有变量的值,但在尝试访问单个属性时却不能 的相关文章

  • Codeigniter:Base_url 似乎不起作用

    我开发了一个简单的网站 可以从 Twitter 公共时间线获取推文 将其缓存 60 秒等等 我最近将主机从 Hostgator 移至 Mediatemple 我的网站之前在 Hostgator 上运行良好 我的应用程序不使用数据库连接 也不
  • PHP cURL 重定向到本地主机

    我正在尝试使用带有 cURL 的 php 脚本登录外部网页 我是 cURL 的新手 所以我觉得我错过了很多东西 我找到了几个例子并修改了它们以允许访问https页面 最终 我的目标是能够登录页面并在登录后通过指定的链接下载 csv 到目前为
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • 将扩展配置文件实体添加到 FOS UserBundle

    我正在尝试扩展 FOS UserBundle 以允许扩展配置文件实体除了基本 UserBundle 字段之外还保存其他信息 因为我的网站上有多种类型的用户 所以我创建了单独的实体来保存个人资料信息 我的实体设置如下 class UserPr
  • 如何解析cURL返回的header?

    我正在尝试使用 cURL 与 API 进行通信 其中一种方法要求我传递ININ ICWS CSRF Token标题 即WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zN
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝
  • 打印一个模式以显示最多 5 行 5 列的数字,例如 5 4 3 2 1 和下一行 4 3 2 1 5 直到第 5 行

    这是一个正方形图案 每行有 5 列 共有 5 行 图案如下所示 5 4 3 2 1 4 3 2 1 5 3 2 1 5 4 2 1 5 4 3 1 5 4 3 2 我的代码如下以获得模式 但当计数器达到 1 并显示在相应的列值中时 我无法重
  • 如何使用 RewriteRule 来为 PHP 修改 $_SERVER['REQUEST_URI'] ?

    有了这个 htaccess RewriteEngine On RewriteRule foo foo 1 here I tried L PT C etc RewriteRule index php L 我已经尝试了第一个 RewriteRu
  • PHP:如何发送电子邮件基础知识

    我想使用 PHP 从本地主机向其他人发送电子邮件 我需要做什么才能做到这一点 例如我需要安装邮件服务器吗 如果我没记错的话 有一种语言不需要邮件服务器来发送电子邮件 这样对吗 PHP ini里面有 邮件功能 如何配置这个 我在网上查了一下
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • 根据类别 woocommerce 更改同一产品的默认变体值

    我正在研究一种根据其所属类别显示同一产品的默认变体值的方法 例如 我出售一张带有蓝色和红色选项的卡 当用户进入 一 类别时 我希望默认值为蓝色 如果他属于第二类 则该值将为红色 我发现了一个钩子woocommerce product def
  • PHP别名@函数

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

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 如何使用xquery查找节点并向其添加子节点?

    是否可以使用xpath xquery查询特定的xml节点 然后向其导入 添加子节点 示例 代码取自http codepad org gJ1Y2LjM http codepad org gJ1Y2LjM 这是在类似的问题中提出的 但不相同 1
  • PHP 相当于朋友或内部

    php 中是否有相当于 朋友 或 内部 的东西 如果没有 是否有任何模式可以遵循来实现这种行为 Edit 抱歉 但标准 Php 不是我想要的 我正在寻找类似于马戏团长所做的事情 我有一些类在后端进行 C 风格的系统调用 并且杂耍已经开始变得
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • 如何更改phpmyadmin MySQL的IP地址?

    我在 xampp 中更改了 apache 的 IP 地址 但无法连接到 MySQL 我认为问题是我的 apache 不在我的数据库的同一网络上 我的 apache 位于 192 168 1 10 而我的 MySQL 位于 127 0 0 1

随机推荐

  • Eclipse 变得疯狂(自从 SDK Lollipop 更新以来)

    我好几天都写不出代码了 当我尝试编辑布局时 Eclipse 通常会返回此错误 并创建新项目 新的 xml 文件 尝试运行项目 解析Sdk内容失败java lang ExceptionInInitializerError 解析Sdk内容失败无
  • C 中 *myptr++ 和 *(myptr++) 有什么区别

    我正在使用C 假设我有一个指向名为 myptr 的整数的指针 int myptr 那么以下之间有什么区别 myptr and myptr 谢谢 担 Since 优先级高于 有没有不同两者之间
  • PHP 5.2.14 的 DateTime::CreateFromFormat [重复]

    这个问题在这里已经有答案了 我使用以下代码将用户输入转换为 mysql 时间戳 datetime DateTime createFromFormat m d Y g i a exp timestamp datetime gt format
  • 使用 Google Calendar API (PHP) 插入包含非 ASCII 字符的事件

    我在使用 Google Calendar API PHP v3 插入事件时遇到问题 如果事件的说明包含井号 等字符 则会在日历中创建该事件 但说明留空 似乎对于初始 7 位字符代码 ASCII 代码 0 127 之外的所有字符都是如此 通过
  • 更新 chromium 版本后量角器问题

    我刚刚更新了我的 chromium 版本 getAttribute 总是返回 null 有人知道为什么吗 在此更新之前工作正常 CHROMIUM REVISION 884014 element by id elementId getAttr
  • OpenGL ES 2.x:有什么方法可以重用深度缓冲区进行离屏和屏上渲染?

    我正在进行双通道渲染 第一通道我渲染到纹理 第二通道我渲染到屏幕 我在两次渲染过程中渲染相同的多边形 但使用不同的着色器 特别是 第二遍使用着色器 该着色器将第一遍生成的纹理作为参数 目前 我的第一遍有一个帧缓冲区 其中包含用于颜色附件的纹
  • 在Python中将字符串转换为变量名[重复]

    这个问题在这里已经有答案了 我有任何字符串 比如 水牛 x buffalo 我想将此字符串转换为某个变量名称 例如 buffalo 4 不仅是这个例子 我想将任何输入字符串转换为某个变量名称 我应该怎么做 在Python中 x buffal
  • 如何在 Eclipse 中从验证中排除特定文件夹或文件?

    我们在单元测试中使用了一堆格式错误的 XML 文件来检查我们的应用程序是否可以处理它们 Eclipse 将此 XML 文件标记为错误 从而污染 问题视图 有没有办法从 Eclipse 验证器中排除特定文件夹 在窗口 gt 首选项的验证部分中
  • NSDateFormatter 返回 nil

    我正在尝试解析以以下格式传递的日期 2014 03 26T05 07 42 14286Z My NSDateFormatter代码看起来像这样 NSDateFormatter dateFormatter NSDateFormatter al
  • 如何在 Bash 中测试变量是否为数字?

    我只是不知道如何确保传递给我的脚本的参数是数字还是不是数字 我想做的就是这样 test isnumber 1 VAR 1 echo need a number 有什么帮助吗 一种方法是使用正则表达式 如下所示 re 0 9 if yourn
  • C#/WPF 应用程序实现应用 CLI 的简单 IPC 机制

    所以我在 Net 上阅读了大量有关进程间通信的内容 命名管道 远程处理 这一切看起来都很棒 但对于我需要做的事情来说可能有点过分了 我想向我的 WPF 应用程序添加一个命令行界面 因此我需要一种简单的 IPC 机制来将字符串从一个进程发送到
  • DosBox 中的向量头文件

    我正在使用 DosBox 0 74 我想使用向量函数 但我找不到它的头文件 它不是
  • 如何在 Android 上使用 VPN API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在探索 Android 中的 VPN 连接 我想知道如何使用应用程序在 Android 中设置 VPN 连接 我遇到了一些名为的示例代码ToyVpn 我运行了该应用程序 但我不知
  • testcafe 中其他几名跑步者的跑步大师?

    我有几个跑步者正在使用 Promise race 在特定时间完成测试用例 假设我有 runner1 js runner2 js runner3 js 如何创建主运行程序以便可以一起运行所有这些运行程序 const createTestCaf
  • 带有单引号和双引号的 bash 别名命令

    我有以下命令 svn status awk 1 M print 2 我如何用它来创建别名 我努力了 alias xx svn status awk 1 M print 2 你只需要正确地转义它 alias xxx svn status aw
  • 用户友好的错误页面在生产环境中不显示

    最近 我的生产环境中停止显示用户友好的错误页面 我正在使用 Rails 3 0 3 我的中有以下内容config environments production rb config action controller consider al
  • 调试在 dllhost.exe 中运行的 inproc com 服务器

    我正在编写一个在 dllhost exe 代理中运行的 inproc com dll 但在调试它时遇到了问题 如果同时运行多个 dllhost exe 找到正确的一个来附加调试器将会很烦人 如果有很多正在运行 有没有一种简单的方法可以识别您
  • 初学者从结构数组中删除第一个元素 (C)

    我有一个结构数组 实际上它是一个按优先级排序的堆数组 typedef struct char name MAX CHARACTERS 1 int priority person person p MAX HEAPSIZE 1 并想要删除数组
  • 使用 python 更快地搜索 Azure blob 名称?

    我有一个需要在 Azure 上搜索的文件名列表 现在 作为一个菜鸟 我正在循环每个 blob 名称并比较字符串 但我认为必须有最简单 快速的方法来完成此任务 当前的解决方案使我的 HTTP 响应非常慢 def ifblob exists s
  • 为什么 var_dump 可以确定私有变量的值,但在尝试访问单个属性时却不能

    我有一个对象被扔到会话数组中 我想运行 foreach 在 items 属性上 我似乎无法访问它 我看到它是私有的 但我忍不住想知道为什么 var dump 可以向我显示该属性包含的内容 但我无法读取数据 因为它会引发致命错误 我想如果我真