【问题标题】:PHP object, how to reference?PHP对象,如何引用?
【发布时间】:2015-02-10 05:46:26
【问题描述】:

如何指向 cid 并获取值?

$item->?

array(1) {
  [0]=>
  object(__PHP_Incomplete_Class)#4 (4) {
    ["__PHP_Incomplete_Class_Name"]=>
    string(7) "Product"
    ["_param:protected"]=>
    array(40) {
      ["pid"]=>
      string(3) "540"
      ["cid"]=>
      string(2) "22"
      ["sid"]=>
      string(1) "1"
      ["tid"]=>
      string(1) "9"
      ["sales_volume"]=>
      string(1) "0"
      ["preorder_volume"]=>
      string(1) "0"
      ["viewed"]=>
      string(1) "0"
      ["weight"]=>
      string(4) "0.00"
      ["delivery_type"]=>
      string(6) "postal"
      ["cash_price"]=>
      string(4) "0.00"
      ["coupon_price"]=>
      string(4) "0.00"
      ["coupon_require"]=>
      NULL
      ["member_price"]=>
      NULL
      ["discount_code"]=>
      NULL
      ["special_offer"]=>
      string(1) "0"
      ["lan"]=>
      string(13) "eng,tchi,schi"
      ["special_offer_price"]=>
      string(4) "0.00"
      ["special_offer_begin"]=>
      string(19) "2010-09-06 11:25:05"
      ["special_offer_end"]=>
      string(19) "2010-09-06 11:25:05"
      ["bonus_point"]=>
      string(1) "0"
      ["tax"]=>
      string(4) "0.00"
      ["release_date"]=>
      string(19) "2010-09-06 11:25:05"
      ["begin_datetime"]=>
      string(19) "2010-07-13 14:41:26"
      ["end_datetime"]=>
      NULL
      ["delivery_status"]=>
      string(4) "24hr"
      ["stock"]=>
      string(1) "0"
      ["status"]=>
      NULL
      ["discon"]=>
      string(1) "0"
      ["product_desc"]=>
      string(0) ""
      ["model_num"]=>
      string(8) "ATH-BT03"
      ["rating"]=>
      string(0) ""
      ["recycle_id"]=>
      array(2) {
        [0]=>
        string(1) "5"
        [1]=>
        string(2) "20"
      }
    }
    }
    ["doc:private"]=>
    object(DOMDocument)#5 (0) {
    }
  }
}

【问题讨论】:

    标签: php


    【解决方案1】:

    类属性 _param 受保护,您无法从外部访问该属性。 尝试使用反射。您可以在http://mark-story.com/posts/view/using-the-php-reflection-api-for-fun-and-profit 找到如何将私有/受保护的财产公开。可能会有帮助。

    【讨论】:

      【解决方案2】:

      看起来像一个非常奇怪的混合对象。

      如果我没看错的话,它是一个数组,其中包含一个对象,该对象具有一个名为 _param 的属性,该属性是一个带有键 cid 的数组。

      $item[0]->_param['cid']

      【讨论】:

        【解决方案3】:

        _param 成员被声明为受保护的,并且只能从类本身、父类或继承类中访问。从类外部访问该变量的方法是创建并调用“getter”方法,如下所示:

        function getCid() {
            return $this->_param['cid'];
        }
        

        【讨论】:

        • 没有。这不是办法。如果有可能,它会破坏保护成员的目的,不是吗?改为查找 Reflection 类。
        • 有一个成员的类,其值需要对除自身/所有者之外的所有内容都是只读的?拥有一个 getter 方法是完全合理的,不是吗?
        • 没错,但是getter方法也必须是这个类的成员。也许这就是你的意思。我可能误会了。
        • 我当然是这个意思,不过我有点不清楚。我还做了一个不恰当的假设,即 hkvega01 可以访问类源。这个问题没有说明他们是否可以访问,所以我不应该这样假设。
        • 对象是__PHP_Incomplete_Class_Name 类型,这通常意味着它是从会话加载或以其他方式序列化的对象,但在反序列化时尚未加载实际的类代码。
        猜你喜欢
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 2020-03-03
        • 2016-12-10
        • 2012-03-09
        • 2017-10-27
        相关资源
        最近更新 更多