当前位置: 首页 > 知识库问答 >
问题:

PHP-试图访问对象中的值

敖永丰
2023-03-14

它是一个名为$_product的woocommerce对象

当我var_dump它时,我得到:

object(WC_Product_Variation)#4358 (13) {
  ["post_type":protected]=>
  string(17) "product_variation"
  ["parent_data":protected]=>
  array(16) {
    ["title"]=>
    string(7) "Antares"
    ["status"]=>
    string(7) "publish"
    ["sku"]=>
    string(0) ""

当我回显$_product->post_type;时,我按预期得到了product_variation,但我无法访问状态值!

var_dump($_product->parent_data);不提供任何信息(为空)

为什么?

共有1个答案

单于经纬
2023-03-14

不能访问对象实例或其父实例之外的受保护的属性。有关更多信息,请参见PHP.NET上的属性可见性。

那么,为什么可以访问$post_type,即使它是保护的呢?好吧,有人足够“聪明”,在这个神奇的getter方法中定义了一个规则异常--https://woocommerce.github.io/code-reference/files/woocommerce-includes-legacy-abstract-wc-legacy-product.html#source-view.68

这是一种不好的做法,不应该使用。

相反,您可以创建自己的类,扩展WC_Product_Variation并定义自己的公共getterGetPostType()GetParentData()。当您想要使用getter时,不要忘记实例化myWC_Product_Variation而不是WC_Product_Variation

class MyWC_Product_Variation extends WC_Product_Variation
{
    public function getPostType(): string
    {
        return $this->post_type;
    }

    public function getParentData(): array
    {
        return $this->parent_data;
    }
}
 类似资料:
  • 问题内容: 我有一个要从ExtJS界面发布到PHP的JSON对象。我从那里得到物体 该对象将包含3个数组,我可以查看是否 我需要获取每个数组并从中构建SQL查询。我的第一个障碍是将数组移出对象,尽管这可能是不必要的。这是我正在使用的代码块: 我没有正确创建数组。我也尝试过 那也不行。我确定我在这里容易错过一些事情。同样,这可能是不必要的,因为我可能可以直接访问它们。我需要通过遍历数组并将每个键附加

  • 问题内容: 我有以下JSON: 我拼命尝试访问动态对象名称,如,该怎么办? 现在我有: 问题答案: 我可以想象,最简单的方法是解码为关联数组而不是stdClass对象

  • 问题内容: 首先看下面的JavaScript对象 我想将值设置为与相同,因此我将对象值放在前面,但它对我不起作用,我也使用过,但仍然失败。我的问题是如何访问对象内对象的属性。 一些用户沉迷于问“您想做什么或发送脚本等”,对于那些人来说,答案很简单:“我想访问对象内的对象属性”,上面提到了脚本。 任何帮助将不胜感激 :) 问题答案: 使用 对象文字 语法时,不能在初始化期间引用对象。创建对象后,需要

  • 问题内容: 看一下这个例子: 如何从子对象中访问随机对象? 问题答案: 让类将自己的实例传递给该类。 经典Occam剃刀。

  • 可以使用点号(.),或中括号([])来访问 JSON 对象的值。 使用点号访问对象时,直接使用对象的 key 来访问, key 无须放在双引号中。如: <script>   var myObj, x;   myObj = { "github": "https://github.com/leiqikui" };   x = myObj.github;   document.write(x); </

  • 问题内容: 就像是 这是我想象的格式,但事实并非如此。什么会退回到对象的父级? 问题答案: JavaScript本身不提供此功能。而且我怀疑您是否可以创建这种类型的功能。例如: 鲍比属于谁?

  • 问题内容: 您如何访问PHP对象的属性? 此外,使用vs 访问对象的属性有什么区别 ? 当我尝试使用时,出现以下错误: “ PHP:无法访问空属性”。 PHP的对象属性文档中有一条评论提到了这一点,但是该评论并没有真正深入地解释。 问题答案: //特定变量 //特定属性 在类上的一般用法是在没有其他情况下调用被称为任意值的变量。 例:

  • 问题内容: 好的,这是一个新手问题,但我在任何地方都找不到答案。在Symfony2中的控制器中,我想从我的一个表单中访问POST值。在控制器中,我有: 不幸的是没有返回任何东西。我究竟做错了什么?谢谢! 问题答案: 此解决方案从2.3开始弃用,并将在3.0中删除,请参阅文档 给你一个数组的形式参数 摘自symfony2书第162页(第12章:表格) […]有时,您可能只想使用没有类的表单,并取回已