一尘不染

如何在PHP中获取对象的受保护属性

php

我有一个要获取和设置一些受保护属性的对象。该对象看起来像

Fields_Form_Element_Location Object
(
[helper] => formText
[_allowEmpty:protected] => 1
[_autoInsertNotEmptyValidator:protected] => 1
[_belongsTo:protected] =>


[_description:protected] => 
[_disableLoadDefaultDecorators:protected] => 
[_errorMessages:protected] => Array
    (
    )

[_errors:protected] => Array
    (
    )
[_isErrorForced:protected] => 
[_label:protected] => Current City


[_value:protected] => 93399
[class] => field_container field_19 option_1 parent_1
)

我想获取value对象的属性。当我尝试$obj->_value$obj->value它产生错误。我搜索并找到了要使用的解决方案PHP Reflection Class。它在我本地但在服务器上的PHP版本上工作,5.2.17因此我不能在此使用此功能。那么任何解决方案如何获得这种财产?


阅读 988

收藏
2020-05-26

共1个答案

一尘不染

这就是“受保护”的含义,正如“
可见性”一章所解释的:

声明为protected的成员只能在该类内部以及继承的和父类访问。

如果需要从外部访问该属性,请选择以下一项:

  • 不要将其声明为受保护的,而是将其公开
  • 编写几个函数来获取和设置值(getter和setter)

如果您不想修改原始类(因为它是第三方库,那么您就不会搞乱),请创建一个扩展原始类的自定义类:

class MyFields_Form_Element_Location extends Fields_Form_Element_Location{
}

…然后在其中添加您的吸气剂/设置剂。

2020-05-26