这一行:
var_dump($data['department']);
返回:
object(Penny\HomeBundle\Entity\Department)[1420]
protected 'id' => int 37
protected 'name' => string 'Support' (length=7)
protected 'email' => string 'denis_nizetic@hotmail.com' (length=25)
当我尝试
时var_dump(get_object_vars($data['department']));
我得到了
array
empty
我不知道为什么如果对象在那里会发生这种情况。
编辑:我使用$ obj-> getValue()方法(getters)解决了我的问题。
但问题仍然存在:为什么get_object_vars()不会起作用?
答案 0 :(得分:3)
答案 1 :(得分:1)
get_object_vars只获取对象的公共属性。因为您只有受保护的属性,所以不会返回任何内容。
如果您想获得受保护的,请尝试扩展该类并从此类中的方法执行get_object_vars。
答案 2 :(得分:0)
这应归功于您的属性的“受保护”可见性。如果将字段更改为“public”,它是否会显示它们?
答案 3 :(得分:0)
这是因为变量受到保护。 get_object_vars只能看到可访问的变量。
答案 4 :(得分:0)
get_object_vars仅返回公共属性,以获取可以使用Reflection的受保护属性列表 例子: http://php.net/manual/en/reflectionclass.getproperties.php
答案 5 :(得分:0)
实际上,该函数只返回公共属性。 解决此问题的最明智的选择是让一个公共方法在类中返回get_object_vars并从实例中调用它。 我认为将所有属性设置为公共过于剧烈的变化。 使用此方法,您没有将属性设置为公共,并且您的类设计保持不变。