在 PHP 中,使用 -> 访问对象的受保护属性不允许直接操作员。当您需要使用这些属性时,这可能是一个挑战。
如果您使用的是较旧的 PHP 版本(例如 5.2.17),则不能使用 ReflectionClass 方法来访问受保护的属性。
解决方案:
幸运的是,有一个相对简单的解决方案问题:
function accessProtected($obj, $prop) { $reflection = new ReflectionClass($obj); $property = $reflection->getProperty($prop); $property->setAccessible(true); return $property->getValue($obj); }
该函数有两个参数:包含受保护属性的对象和要访问的属性的名称。它使用 ReflectionClass 类创建对象的反射,然后使用 getProperty() 方法获取特定属性。最后,它使用 setAccessible() 方法将属性的可访问性设置为 true,然后使用 getValue() 方法检索值。
用法示例:
$obj = new Fields_Form_Element_Location(); $currentValue = accessProtected($obj, '_value');
注意事项:
请注意,此解决方案并不通用 兼容的。某些 PHP 框架或特定对象实现可能有额外的限制,以防止外部访问受保护的属性。在使用此技术之前,始终建议检查框架或对象库的文档以验证兼容性。
以上是如何访问较旧 PHP 版本(例如 5.2.17)中受保护的属性?的详细内容。更多信息请关注PHP中文网其他相关文章!