php中获取对象属性的方法有哪些-亚博电竞手机版
php技术
2021年02月06日 16:57
0
这期内容当中小编将会给大家带来有关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中获取对象属性的方法有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。
展开全文