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

<?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 "jb51.net"; ?>

请求输出结果:

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

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a60b9b4806d405f2977e5909ef194676.html