为什么 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 可以确定私有变量的值,但在尝试访问单个属性时却不能 的相关文章

  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 在 PHP 中撤销 Google 访问令牌

    正如标题所示 我想以编程方式撤销授予的访问令牌 即在 PHP 中 我发现这个他们的网站 https developers google com identity protocols OAuth2WebServer tokenrevoke 但
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 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 可以向我显示该属性包含的内容 但我无法读取数据 因为它会引发致命错误 我想如果我真