这期内容当中小编将会给大家带来有关PHP中获取对象属性的方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
具体如下:
classTestClass{ private$a; protected$b; public$c; public$d; publicstatic$e; privatefunctionfuncA(){ } protectedfunctionfuncB(){ } publicfunctionfuncC(){ } publicfunctiongetPropertyMethodOne(){ echo"[get_object_vars]",PHP_EOL; $vars=get_object_vars($this); foreach($varsas$k=>$v){ echo$k,'=>',$v,PHP_EOL; } } publicfunctiongetPropertyMethodTwo(){ echo"[foreachobject]",PHP_EOL; foreach($thisas$k=>$v){ echo$k,'=>',$v,PHP_EOL; } } publicfunctiongetPropertyMethodThree(){ echo"[reflection]",PHP_EOL; $class=newReflectionClass($this); foreach($class->getProperties(ReflectionProperty::IS_PUBLIC)as$property){ if(!$property->isStatic()){ echo$property->getName(),'=>',$property->getValue($this),PHP_EOL; } } } }
测试代码一
$obj=newTestClass(); echo"[get_object_vars]",PHP_EOL; $vars=get_object_vars($obj); foreach($varsas$k=>$v){ echo$k,'=>',$v,PHP_EOL; } echo"[foreachobject]",PHP_EOL; foreach($objas$k=>$v){ echo$k,'=>',$v,PHP_EOL; } echo"[reflection]",PHP_EOL; $class=newReflectionClass($obj); foreach($class->getProperties(ReflectionProperty::IS_PUBLIC)as$property){ if(!$property->isStatic()){ echo$property->getName(),'=>',$property->getValue($obj),PHP_EOL; } }
输出:
[get_object_vars]c =>d =>[foreach object]c =>d =>[reflection]c =>d =>
可见,当着三种方法用在类的外部时,结果是一样的。get_object_vars()
和foreach是获取到的是对象的public non-static属性,而通过反射的话则需要手动筛选出public non-static属性。
测试代码二
$obj=newTestClass(); $obj->getPropertyMethodOne(); $obj->getPropertyMethodTwo(); $obj->getPropertyMethodThree();
输出
[get_object_vars]a =>b =>c =>d =>[foreach object]a =>b =>c =>d =>[reflection]c =>d =>
可见,get_object_vars()
和foreach用在类内部时,private、protected、public的实例属性都能获取到。反射就不用说了,通过手动筛选,各种类型的属性都能获取到。
上述就是小编为大家分享的PHP中获取对象属性的方法有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。
海报
0 条评论
186
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~