栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

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

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;
    }
 
    
    public function getUserId() {
        return $this->userId;
    }
 
    
    public function getUserName() {
        return $this->userName;
    }
 
    
    public function getPassword() {
        return $this->password;
    }
 
    
    public function getEmail() {
        return $this->email;
    }
 
    
    public function getQq() {
        return $this->qq;
    }
 
    
    public function getLoginTimes() {
        return $this->loginTimes;
    }
 
    
    public function setUserId($userId) {
        $this->userId = $userId;
    }
 
    
    public function setUserName($userName) {
        $this->userName = $userName;
    }
 
    
    public function setPassword($password) {
        $this->password = $password;
    }
 
    
    public function setEmail($email) {
        $this->email = $email;
    }
 
    
    public function setQq($qq) {
        $this->qq = $qq;
    }
 
    
    public function setLoginTimes($loginTimes) {
        $this->loginTimes = $loginTimes;
    }
}
?>

Test.php:

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

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

ReflectTest init.
 
UserId:1
UserName:admin
Password:admin888
Field:
 
userId
userName
password
email
qq
loginTimes
get Fields DocComment:
 






get Methods DocComment:
 












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
jb51.net

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/47591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号