在没有反射的情况下访问 PHP 中的受保护属性
当直接访问受到限制时,获取对象的受保护属性可能会很困难。考虑以下示例:
class Fields_Form_Element_Location { protected $_value = 93399; }
直接访问 $_value,例如 $obj->_value 或 $obj->value,将导致错误。
替代方案PHP 5.5 以下版本的解决方案
因为 PHP Reflection 在以下 PHP 版本中不可用从 5.5 开始,另一种方法是使用 get_class_vars() 函数:
function accessProtected($obj, $prop) { $vars = get_class_vars(get_class($obj)); return $vars[$prop]; }
通过使用此函数,您可以检索受保护属性的值,而无需修改其辅助功能设置。
使用示例
$obj = new Fields_Form_Element_Location; $value = accessProtected($obj, '_value'); echo $value; // Output: 93399
此方法允许您检索 PHP 版本中受保护的属性不支持反射。但是,需要注意的是,它可能并不适用于所有情况,特别是如果受保护的属性是动态分配的。
以上是如何访问较旧 PHP 版本(5.5 之前)中受保护的属性?的详细内容。更多信息请关注PHP中文网其他相关文章!