怎么在PHP中利用反射动态获取类方法和属性

  介绍

这篇文章将为大家详细讲解有关怎么在PHP中利用反射动态获取类方法和属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

& lt; PHP ?   class  Person  {   const 才能;weightUnit =, & # 39;公斤# 39;;   const 才能;heightUnit =, & # 39;厘米# 39;;   public 才能;name 美元;=,& # 39;测试# 39;;   public 才能;age 美元;=,1;   public 才能;function 说($ msg =, & # 39; & # 39;), {   ,,,echo 味精美元;   ,,}   }      $ p =, new  Person  ();//,普通的实例化对象,调用方法   ($ p→say  & # 39;你好# 39;,);   echo “& lt; br/在“;//,创建一个人的反射类   rp 美元;=,new  ReflectionClass (, & # 39;简历及# 39;,);//,通过ReflectionClass的方法来获取类的详细信息//,获取常量   echo  rp→美元getConstant  (, & # 39; weightUnit& # 39;,);   echo “& lt; br/在“;//,获取类中已定义的常量   var_dump  (, rp→美元getConstants  (),);//,获取属性,返回的是一个ReflectionProperty类   美元$ propName =, rp→getProperty (, & # 39;名字# 39;,);   echo  propName→美元getName(), & # 39;: & # 39;,美元propName→getValue  (, new  Person  (),);   echo “& lt; br/在“;//,获取类中已定义的一组属性   美元$ propArr =, rp→getProperties  ();   foreach  (, propArr 美元;as  obj 美元),{   echo 才能;obj→美元getName (), & # 39;: & # 39;,美元obj→getValue  (, new  Person  (),);   }   echo “& lt; br/在“;//获取方法,返回的是一个ReflectionMethod类   美元$ sayMetd =, rp→getMethod(& # 39;说# 39;);   如果($ sayMetd→isPublic (),,,, ! sayMetd→美元isAbstract ()), {   sayMetd→美元才能调用(new 人(),& # 39;呵呵# 39;);   美元才能sayMetd→invokeArgs (new 人(),数组(& # 39;呵呵# 39;));   }//获取类中已定义的一组方法,可以过滤不需要的方法   美元$ metds =, rp→getMethods ();//获取命名空间   echo  rp→美元getNamespaceName ();   echo “& lt; br/在“;//判断一个方法是否定义   如果(rp→美元hasMethod(& # 39;说# 39;)),{   echo 才能;& # 39;say 有# 39;;   }   echo “& lt; br/在“;//判断一个属性是否定义   如果(rp→美元hasProperty(& # 39;名字# 39;)),{   echo 才能;& # 39;name 有# 39;;   }

运行结果:


你好公斤
阵列(2){[“weightUnit"]=比;字符串(2)“kg"(“heightUnit")=比;字符串(2)“cm"}名称:测试
名称:testage: 1
哈哈哈
说名字

关于怎么在PHP中利用反射动态获取类方法和属性就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

怎么在PHP中利用反射动态获取类方法和属性