前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 反射的简单使用

PHP 反射的简单使用

作者头像
lin_zone
发布2018-08-15 11:23:41
1.4K0
发布2018-08-15 11:23:41
举报
文章被收录于专栏:LIN_ZONE

反射机制简介

  1. 之前已经介绍过Java反射机制的简单使用,所有的反射机制的思想作用等都是类似的,下面就一起来了解一下PHP反射机制。
  2. 个人理解:反射机制就是可以利用类名或者一个类的对象来获取关于这个类的一系列信息(类的变量,方法),然后又就可以利用得到的类的信息实例化一些类的对象
  3. 官方给的简介:反射 API,有 对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。
  4. 一般在框架中使用到反射机制比较多(控制反转),正常情况下一般使用不到反射的

反射机制的使用

  1. 常用的类
    1. ReflectionClass 通过类名获取类的信息
    2. ReflectionObject 通过类的对象获取类的信息
  2. 代码,还以之前介绍Java反射的Worker类为例 worker.php: <?php class Worker{ //工人的一些属性 private $name_; private $age_; private $salary_; //构造方法 public function __construct($name,$age,$salary){ $this->name_ = $name; $this->age_ = $age; $this->salary_ = $salary; } //输出工人信息的方法 public function show(){ echo "年龄".$this->salary_; echo "姓名".$this->name_; echo "工资".$this->salary_; } //__toString方法 public function __toString(){ return "年龄:".$this->age.",姓名:".$this->name."工资:".$this->salary; } } 下面可以通过反射机制获取类的信息 注 getObjectOfRuntimeClass.php 该文件和worker.php 在一个文件夹下 <?php include 'worker.php'; //通过类名获取 $workClass_by_classname = new ReflectionClass('Worker'); //通过类的实例对象获取 $w = new Worker("小明",20,20); $workerClass_by_classinstance = new ReflectionObject($w); //因为ReflectionObject是ReflectionClass的子类,所以workClass_by_classname的方法,workerClass_by_classinstance同样适用 //下面利用workClass_by_classname对象获取类的一些属性 //获取类名 echo $workClass_by_classname->getName(); //获取类的方法列表 var_dump($workClass_by_classname->getMethods()); //获取类的属性 var_dump($workClass_by_classname->getProperties()); //利用反射得到方法,并执行该方法 $worker = $workClass_by_classname->newInstance("小明",20,20); $show_method = new ReflectionMethod('Worker','show'); $show_method->invoke($worker); //利用反射机制得到属性,并设置值 $property = $workClass_by_classname->getProperty('name_'); $property->setAccessible(true); var_dump($property->getValue($worker)); $property->setValue($worker ,'小红'); var_dump($property->getValue($worker)); 除了这些外,PHP反射还有其他的功能,具体可参考PHP手册的反射部分 如需转载请注明出处:http://www.cnblogs.com/zhuchenglin/p/8890451.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 反射机制简介
  • 反射机制的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档