• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP中的reflection反射机制测试例子

php 搞代码 4年前 (2022-01-01) 47次浏览 已收录 0个评论

这篇文章主要介绍了PHP中的reflection反射机制测试例子,从本文可以学到一些反射的使用方法,需要的朋友可以参考下

Java类反射应用得非常广泛几乎是所有框架的最核心部分,PHP程序员似乎从不关心反射。尝试着用java的思想去理解php的反射,跟java基本上基本一致。参考了php手册:http://www.php.net/manual/zh/book.reflection.php。

ReflectTest.php:

 userId = $userId;         $this->userName = $userName;         $this->password = $password;     }       /**      *      * @return the $userId      */     public function getUserId() {         return $this->userId;     }       /**      *      * @return the $userName      */     public function getUserName() {         return $this->userName;     }       /**      *      * @return the $password      */     public function getPassword() {         return $this->password;     }       /**      *      * @return the $email    <em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>  */     public function getEmail() {         return $this->email;     }       /**      *      * @return the $qq      */     public function getQq() {         return $this->qq;     }       /**      *      * @return the $loginTimes      */     public function getLoginTimes() {         return $this->loginTimes;     }       /**      *      * @param field_type $userId                 */     public function setUserId($userId) {         $this->userId = $userId;     }       /**      *      * @param field_type $userName               */     public function setUserName($userName) {         $this->userName = $userName;     }       /**      *      * @param field_type $password               */     public function setPassword($password) {         $this->password = $password;     }       /**      *      * @param field_type $email              */     public function setEmail($email) {         $this->email = $email;     }       /**      *      * @param field_type $qq                 */     public function setQq($qq) {         $this->qq = $qq;     }       /**      *      * @param field_type $loginTimes                 */     public function setLoginTimes($loginTimes) {         $this->loginTimes = $loginTimes;     } } ?>

Test.php:

 <?php require_once 'ReflectTest.php'; $ref = new ReflectTest("1", "admin", "admin888");//实例化ReflectTest echo "<h1>ReflectTest init.</h1><br />UserId:".$ref->getUserId()."<br />UserName:".$ref->getUserName()."<br />Password:".$ref->getPassword(); $class = new ReflectionClass('ReflectTest');//反射加载ReflectTest类 $instance = $class->newInstanceArgs(array('123','root','123456'));//ReflectTest初始化 echo "<h1>Field:</h1><br />"; $field = $class->getProperties(); foreach($field as $f) { echo $f->getName()."<br />";//反射输出所有的成员变量 } echo "<h1>get Fields DocComment:</h1><br />"; foreach($field as $f) { $docComment = $f->getDocComment();//反射输出所有成员变量的文档注释 echo $docComment."<br />"; } $method = $class->getMethods();//获取ReflectTest所有方法 echo "<h1>get Methods DocComment:</h1><br />"; foreach($method as $m) { $docComment = $m->getDocComment();//获取所有方法的文档注释 echo $docComment."<br />"; } echo "<h1>get Methods:</h1><br />"; foreach($method as $m) { $k = "get";//只调ReflectTest中的所有的get方法 echo $m->getName()."=".($k === "" || strpos ( $m->getName (), $k ) === 0?$m->invoke($instance):"")."<br />"; if("setQq"==$m->getName()){ $m->invoke($instance,'441637262');//调用setQq方法为ReflectTest当中的成员变量qq设值 } } echo "<h1>Invoke (set/get)Qq result:</h1><br />"; $qq=$class->getmethod('getQq');//获取getQq方法 echo "getQQ:".$qq->invoke($instance)."<br />";//获取成员变量qq的值 echo "gaodaima.com"; ?>

请求http://localhost/php/test/Test.php输出结果:

 ReflectTest init. UserId:1 UserName:admin Password:admin888 Field: userId userName password email qq loginTimes get Fields DocComment: /** * 用户ID */ /** * 用户名 */ /** * 用户密码 */ /** * 用户邮箱 */ /** * 用户QQ号码 */ /** * 登陆次数 */ get Methods DocComment: /** * * @return the $userId */ /** * * @return the $userName */ /** * * @return the $password */ /** * * @return the $email */ /** * * @return the $qq */ /** * * @return the $loginTimes */ /** * * @param field_type $userId */ /** * * @param field_type $userName */ /** * * @param field_type $password */ /** * * @param field_type $email */ /** * * @param field_type $qq */ /** * * @param field_type $loginTimes */ get Methods: ReflectTest= __construct= getUserId=123 getUserName=root getPassword=123456 getEmail= getQq= getLoginTimes= setUserId= setUserName= setPassword= setEmail= setQq= setLoginTimes= Invoke (set/get)Qq result: getQQ:441637262 gaodaima.com

以上就是PHP中的reflection反射机制测试例子的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP中的reflection反射机制测试例子
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址