Php 获取对象中的私有值
我已经生成了这些数据,但是如何获取数据的值,例如 用户ID->[ID]=>1429517 消息->[数据:协议节点:专用]=>获取我的消息Php 获取对象中的私有值,php,Php,我已经生成了这些数据,但是如何获取数据的值,例如 用户ID->[ID]=>1429517 消息->[数据:协议节点:专用]=>获取我的消息 Array ( [0] => ProtocolNode Object ( [tag:ProtocolNode:private] => message [attributeHash:ProtocolNode:private] => Array (
Array
(
[0] => ProtocolNode Object
(
[tag:ProtocolNode:private] => message
[attributeHash:ProtocolNode:private] => Array
(
[id] => 1429517
[offline] => 0
[type] => text
[t] => 14722889
)
[children:ProtocolNode:private] => Array
(
[0] => ProtocolNode Object
(
[tag:ProtocolNode:private] => body
[attributeHash:ProtocolNode:private] => Array
(
)
[children:ProtocolNode:private] =>
[data:ProtocolNode:private] => get my message
)
)
[data:ProtocolNode:private] =>
)
)
我试过使用这个:
foreach($msgs as $msg) {
echo 'test: ' . $msg->tag ;
}
但我得到了一个错误:
致命错误:无法访问私有属性ProtocolNode::$tag
$reflection = new ReflectionClass($msg);
$prop = $reflection->getProperty("tag");
$prop->setAccessible(true);
$tag = $prop->getValue();
但这是一种有点小技巧的方法,如果你的团队中有ProtocolNode,那么最好添加getter“getTag”,如果ProtocolNode是某个供应商库类,那么你可以将ProtocolNode扩展到MyProtocolNode并添加getter,该类需要提供一个getter方法来获取这些值。如果没有,您可以自己添加,但文档很可能会告诉您如何获取它。您只能从实例化的类中访问私有属性。要从全局范围访问此类属性,必须将属性类型更改为public或使用返回值的getter方法。你是你正在使用的类的作者吗?你能编辑这个类吗?