PHP中获取对象属性的方法有哪些

2021-02-06 16:57:28 186 0
tangjin

这期内容当中小编将会给大家带来有关PHP中获取对象属性的方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

具体如下:

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
上一篇:使用PHP怎么动态获取函数参数 下一篇:使用php怎么批量生成html和txt文件

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码