php - 从名称中包含冒号和斜杠的 PHP 对象获取数据

标签 php

我是对象的新手并且有一些基本的了解,但在从特定类型的节点获取数据方面遇到了困难。

这个:

$test->broadcast_data

返回:

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)
    }
  }
}

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

$test->broadcast_data->id

但是我如何获取 linked_children 数组并将其分配给变量。 "data":"threewp_broadcast\broadcast_data":private 中的冒号和斜杠让我很反感。

谢谢

最佳答案

属性的名称是data。您看到的冒号和斜线不是类属性的一部分。

"data":"threewp_broadcast\broadcast_data":private

threewp_broadcast\broadcast_data表示属性所属的命名空间和类,:private表示data属性为private,因此您不能在没有类方法的情况下访问它。

您可以查看类文件,看看是否有像 getData() 这样的函数可以返回私有(private)属性的值。

例如,类如下:

namespace A;

class B{
    private $test;   
}

它的转储将给出以下内容:

object(A\B)#1 (1) {
  ["test":"A\B":private]=>
  NULL
}

如您所见,"test":"A\B":private 不是属性的名称。

更新

在类里面看了之后threewp_broadcast\broadcast_data ,有一个名为 getData() 的函数,所以你可以这样做:

$test->broadcast_data->getData()['linked_children'];

或者简单地使用类提供的函数get_linked_children():

$test->broadcast_data->get_linked_children();

关于php - 从名称中包含冒号和斜杠的 PHP 对象获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672168/

相关文章:

php - 我如何实例化我的数据库对象,以便在其他类中使用?

php - MySQL - 从表中选择唯一值

php - 使用 PHP 的 DOMDocument 时避免百分比编码 href 属性

php - 使用 PHP 将数据插入 MySQL 数据库出现错误

php - 单个数据库或多个数据库(用于单个应用程序中的多个用户)

php - 检查用户名和电子邮件是否已存在于数据库中

javascript - 如何延迟 php 中输入字段的搜索功能,使其仅在键入 3 个字符后才开始搜索?

php - 尝试在函数中使用私有(private)变量时的错误代码

php - sql select 查询不起作用,根据选择的内容查看结果

php - Symfony2 身份验证 : How can I select a user provider dynamically?