是否有可能使用反射或其他方法访问SplObjectStorage
的数据?当我使用print_r
时,我可以看到有一个包含所有数据的私有属性$storage
和一个数组,但是我无法以任何方式使用反射来访问它。是否有其他可能的解决方案可以在不使用foreach
循环遍历集合的情况下获取数据?
是否有可能使用反射或其他方法访问SplObjectStorage
的数据?当我使用print_r
时,我可以看到有一个包含所有数据的私有属性$storage
和一个数组,但是我无法以任何方式使用反射来访问它。是否有其他可能的解决方案可以在不使用foreach
循环遍历集合的情况下获取数据?
$storage
属性是不可能的,因为它不存在。print_r
(或var_dump
)时,您看到的是调试信息。这些信息是通过类的内部get_debug_info
处理程序提供的。此处理程序允许内部类显示有意义的调试信息,而无需定义实际属性。$r = new ReflectionClass('DateTime');
var_dump($r->hasProperty("timezone"));
timezone
属性,即使您可以访问DateTime
对象上的timezone
属性。原因是此属性未被声明,它仅通过内部get_properties
处理程序提供。再次强调,此属性不是设计用于直接访问的属性,它只存在于a)提供有意义的调试输出和b)指定在序列化对象时应序列化的内容。
clone
... - Smasty