本文实例讲述了php的反射动态获取类方法、属性、参数操作。分享给大家供大家参考,具体如下:
我们可以在php运行时,通过php的反射动态的获取类的方法、属性、参数等详细信息。 大队委竞选稿
用途:插件的设计,文档的自动生成,扩充php语言。
<?phpclass person { const weightunit = 'kg'; const heightunit = 'cm'; public $name = 'test'; public $age = 1; public function say($msg = '') { echo $msg;成功者的心态 }}$p = new person ();// 普通的实例化对象,调用方法$p->say ( 'hello' );echo "<br/>";// 创建一个person的反射类$rp = new reflectionclass ( 'person' );// 通过reflectionclass的方法来获取类的详细信息// 获取常量echo $rp->getconstant ( 'weightunit' );echo "<br/>";// 获取类中已定义的常量var_dump ( $rp->getconstants () );// 获取属性,返回的是一个reflectionproperty类$propname = $rp->getproperty ( 'name' );echo $propname->getname(), ':', $propname->getvalue ( new person () );echo "<br/>";// 获取类中已定义的一组属性$proparr = $rp->getproperties ();foreach ( $proparr as $obj ) { echo $obj->getname (), ':', $obj->getvalue ( new person () );}echo "<br/>";//获取方法,返回的是一个reflectionmethod类$saymetd = $rp->getmethod('s电气工程及其自动化考研学校排名ay');if($saymetd->ispublic() && !$saymetd->isabstract()) { $saymetd->invoke(new person(), 'hehe'); $saymetd->invokeargs(new person(), array('hehe'));}//获取类中已定义的一组方法,可以过滤不需要的方法$metds = $rp->getmethods();//获取命名空间echo $rp->getnamespacename();echo "<br/>";//判断做了一回最好的我一个方法是否定义if($rp->hasmethod('say')) { echo 'say has';}echo "<br/>";//判断一个2021年放假安排表属性是否定义if($rp->hasproperty('name')) { echo 'name has';}
运行结果:
hello
kg
array(2) { [“weightunit”]=> string(2) “kg” [“heightunit”]=> string(2) “cm” } name:test
name:testage:1
hehehehe
say has
name has
本文发布于:2023-04-08 15:27:46,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3dd9afbb287319291100b3bfe82c3c84.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP的反射动态获取类方法、属性、参数操作示例.doc
本文 PDF 下载地址:PHP的反射动态获取类方法、属性、参数操作示例.pdf
留言与评论(共有 0 条评论) |