gpt4 book ai didi

php - 通过反射访问 SplObjectStorage 数据

转载 作者:行者123 更新时间:2023-12-04 00:18:34 25 4
gpt4 key购买 nike

是否可以访问 SplObjectStorage 的数据?使用反射或其他方法?当我使用 print_r在上面,我可以看到有一个私有(private)属性(property)$storage使用包含所有数据的数组,但我无法以任何方式使用反射访问它。是否有其他可能的解决方案来获取数据而无需使用 foreach 迭代集合?

最佳答案

无法访问 $storage属性通过反射,因为它不存在。

当您调用 print_r 时,您会看到什么(或 var_dump )在类上是调试信息。此信息通过内部 get_debug_info 提供。类的处理程序。此处理程序允许内部类在不定义实际属性的情况下显示有意义的调试信息。

一个与切线相关的问题显示以下代码段:

$r = new ReflectionClass('DateTime');
var_dump($r->hasProperty("timezone"));

上面的代码会告诉你这个类没有 timezone属性,即使您可以访问 timezone位于 DateTime 的房产对象。原因是这个属性没有声明,只是通过内部 get_properties 提供处理程序。再一次,这是一个不被设计为直接访问的属性,它只存在于 a) 提供有意义的调试输出和 b) 指定当对象被序列化时应该序列化的内容。

总而言之:反射(reflection)内部类的“属性”通常不会奏效,因为这些属性通常实际上并不存在。

关于php - 通过反射访问 SplObjectStorage 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com