我使用的库使用数组。将print_r应用于该数组将打印出:
Array
(
[*queueId] => 1
[*handle] => 9b875867b36d568483fb35fdb8b0bbf6
[*body] => First string in the TestQueue
[*md5] => c23ba714199666efbc1dcd5659bb0a0a
[*timeout] => 1408003330.6534
[*id] => 2
[*creationdate] => 2014-08-13 16:03:37
)
该库在该数组上使用魔法吸气剂
public function __get($key)
{
if (!array_key_exists($key, $this->_data)) {
throw new Exception\InvalidArgumentException("Specified field \"$key\" is not in the message");
}
return $this->_data[$key];
}
当我尝试访问
时$myObject->body
我遇到了异常。实际上,调试器显示array_key_exists将返回false,而_data数组在上面打印时可用
答案 0 :(得分:3)
星号表示此数组是对象的表示,可能原始对象属性受到保护。 http://php.net/manual/en/language.types.array.php#language.types.array.casting
答案 1 :(得分:2)
正如我在评论中解释的那样,数组键实际上以星号开头。由于您无法使用$obj->*body
的常规语法调用它们(它会导致语法错误),因此您可以使用以下命令:
$myObject->{'*body'}
这可以解决您的问题。
答案 2 :(得分:0)
假设$myObject
是你正在谈论的数组:
您无法使用->
访问数组,而是使用$myObject['*body']
。 (你应该将名称更改为$ myArray,例如)
答案 3 :(得分:0)
正如@MarkBaker在我的问题的评论中所述,问题是我正在将具有私有属性的对象序列化到数组中。星号标志着这些属性是私有的。