介绍
这篇文章将为大家详细讲解有关怎么在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中利用反射动态获取类方法和属性