php 获取类内的属性值,PHP 获取一组属性

Some may find this useful.

* Recursive function to get an associative array of class properties by property name => ReflectionProperty() object

* including inherited ones from extended classes

* @param string $className Class name

* @param string $types Any combination of public, private, protected, static

* @return array

*/functiongetClassProperties($className,$types='public'){$ref= newReflectionClass($className);$props=$ref->getProperties();$props_arr= array();

foreach($propsas$prop){$f=$prop->getName();

if($prop->isPublic() and (stripos($types,'public') ===FALSE)) continue;

if($prop->isPrivate() and (stripos($types,'private') ===FALSE)) continue;

if($prop->isProtected() and (stripos($types,'protected') ===FALSE)) continue;

if($prop->isStatic() and (stripos($types,'static') ===FALSE)) continue;$props_arr[$f] =$prop;

}

if($parentClass=$ref->getParentClass()){$parent_props_arr=getClassProperties($parentClass->getName());//RECURSIONif(count($parent_props_arr) >0)$props_arr=array_merge($parent_props_arr,$props_arr);

}

return$props_arr;

}//USAGEclassA{

public$a1;

functionabc(){//do something}

}

classAAextendsA{

public$a2;

functionedf(){//do something}

}

classAAAextendsAA{//may not have extra properties, but may have extra methodsfunctionghi(){//ok}

}//$ref = new ReflectionClass('AAA'); $props = $ref->getProperties();//This will get no properties!$props_arr=getClassProperties('AAA','public');//Use thisvar_dump($props_arr);/*

OUTPUT on PHP5.2.6:

array

'a1' =>

object(ReflectionProperty)[4]

public 'name' => string 'a1' (length=2)

public 'class' => string 'AAA' (length=3)

'a2' =>

object(ReflectionProperty)[3]

public 'name' => string 'a2' (length=2)

public 'class' => string 'AAA' (length=3)

*/?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值