为了账号安全,请及时绑定邮箱和手机立即绑定

php反射类如何获取构造方法得到的私有属性

php反射类如何获取构造方法得到的私有属性

四季花海 2019-05-21 17:16:03
classtest{private$a=array();publicfunction__construct(){$this->geta();}privatefunctiongeta(){$b[]=1;$b[]=2;$this->a=$b;//没有return}}//反射获取$ref_class=newReflectionClass('test');$geta=$ref_class->newInstance();$method=$ref_class->getmethod('geta');$method->setAccessible(true);$a=$method->invoke($rongyuclass);//空的,因为geta不返回任何值有这样的一个类,现在里面的私有方法geta没有return出任何数据,但是构造方法那边给私有属性a赋值,我直接用反射去取变量$a的时候得到的只能是空值,如何先执行构造,然后得到赋值后的私有属性a?
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

$ref=newReflectionClass('test');$a=$ref->getProperty('a');$a->setAccessible(true);//设置属性a的访问权限var_dump($a->getValue(newtest));
                            
查看完整回答
反对 回复 2019-05-21
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

classtest{
private$a=array();
publicfunction__construct(){
$this->geta();
}
privatefunctiongeta(){
$b[]=1;
$b[]=2;
$this->a=$b;
//没有return
}
}
$test=newtest;
$closure=function(){
return$this->a;
};
//rebindstheclosuretothe$testobject
$closure=$closure->bindTo($test,$test);
print_r($closure());
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信