使用名称中的冒号和斜杠从PHP对象获取数据

Joe*_*Joe 5 php

我是对象的新手并且有一些基本的了解,但在从特定类型的节点获取数据方面苦苦挣扎.

这个:

$test->broadcast_data
Run Code Online (Sandbox Code Playgroud)

返回:

object(threewp_broadcast\BroadcastData)#1599 (5) {
  ["id"]=>
  int(49663)
  ["blog_id"]=>
  int(1)
  ["post_id"]=>
  int(38863)
  ["dataModified":"threewp_broadcast\broadcast_data":private]=>
  bool(true)
  ["data":"threewp_broadcast\broadcast_data":private]=>
  array(2) {
    ["version"]=>
    int(2)
    ["linked_children"]=>
    array(3) {
      [2]=>
      int(18557)
      [3]=>
      int(8097)
      [4]=>
      int(1768)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下方式获取ID:

$test->broadcast_data->id
Run Code Online (Sandbox Code Playgroud)

但是我如何获得linked_children数组并将其分配给变量.冒号和斜线"data":"threewp_broadcast\broadcast_data":private让我失望.

谢谢

Chi*_*ung 7

该物业的名称是data.您所看到的冒号和斜线不属于该类的属性.

"data":"threewp_broadcast\broadcast_data":private
Run Code Online (Sandbox Code Playgroud)

threewp_broadcast\broadcast_data代表该财产属于命名空间和类和:private该方法data属性private,因此你不能没有一个类的方法访问它.

您可以查看类文件以查看是否有类似函数getData()将返回私有属性的值.

例如,类如下所示:

namespace A;

class B{
    private $test;   
}
Run Code Online (Sandbox Code Playgroud)

转储它会产生以下结果:

object(A\B)#1 (1) {
  ["test":"A\B":private]=>
  NULL
}
Run Code Online (Sandbox Code Playgroud)

如您所见"test":"A\B":private,不是该物业的名称.

更新

在查看类threewp_broadcast\broadcast_data之后,有一个名为的函数getData(),您可以这样做:

$test->broadcast_data->getData()['linked_children'];
Run Code Online (Sandbox Code Playgroud)

或者只是使用get_linked_children()该类提供的功能:

$test->broadcast_data->get_linked_children();
Run Code Online (Sandbox Code Playgroud)

  • 额外研究的好工作! (2认同)