lin_zone
PHP 反射的简单使用
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
lin_zone
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
PHP 反射的简单使用
PHP 反射的简单使用
lin_zone
关注
发布于 2018-08-15 11:23:41
1.4K
0
发布于 2018-08-15 11:23:41
举报
文章被收录于专栏:
LIN_ZONE
反射机制简介
之前已经介绍过
Java反射机制的简单使用
,所有的反射机制的思想作用等都是类似的,下面就一起来了解一下PHP反射机制。
个人理解:反射机制就是可以利用类名或者一个类的对象来获取关于这个类的一系列信息(类的变量,方法),然后又就可以利用得到的类的信息实例化一些类的对象
官方给的简介:反射 API,有 对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。
一般在框架中使用到反射机制比较多(控制反转),正常情况下一般使用不到反射的
反射机制的使用
常用的类
ReflectionClass 通过类名获取类的信息
ReflectionObject 通过类的对象获取类的信息
代码,还以之前介绍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
删除
前往查看
php
java
api
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
php
java
api
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
反射机制简介
反射机制的使用
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐