关于php反射机制的一些理解
//=====纯属是个人的理解,不一定正确,请谅解======
关于php的反射机制,php反射机制的最大的用处是通过一个实例化的对象来获取对象所属类的一些信息,而可以通过该对象所属类的相关信息来对对象进行别的操作。
下面我用一个例子来理解一下php的反射机制
首先先定义一个Person类,类里面有$name,$age,$sex的属性以及它们的get和set方法,这个很容易。
/*** 这是Person类的注释*/
class Person{private $name='未命名';private $age=0;private $sex='';/*** setName(string name)[新建姓名]*/public function setName($n){$this->name=$n;}public function getName(){return $this->name;}public function setAge($a){$this->age=$a;}public function getAge(){return $this->age;}public function setSex($s){$this->sex=$s;}public function getSex(){return $this->sex;}}
然后我们先创建一个实例化对象,之后获取一下该对象的所属类,也就是Person类...
//...实例化对象...$person=new Person();//...利用反射机制得到对象所属类...$ref_cls=new ReflectionClass($person);
是的,就是一个简单的ReflectionClass(对象)就可以获取到对象所属类Person了。
为了验证是否获取成功,我们再用一些方法来测试一下。
//...实例化对象...$person=new Person();//...利用反射机制得到对象所属类...$ref_cls=new ReflectionClass($person);//...打印反射类中所有的方法...$arr=$ref_cls->getMethods();print_r($arr);//...打印反射类的注释...var_dump($ref_cls->getDocComment());//...打印第一个方法的注释...$ref_fun=$arr[0];var_dump($ref_fun->getDocComment());//...invoke,执行方法...//...setting...$ref_method=new ReflectionMethod($person,'setName');$ref_method->invoke($person,'new name');//...getting...$ref_method=new ReflectionMethod($person,'getName');$ref_method->invoke($person);var_dump($ref_method->invoke($person));
运行的结果如下:
这个反射机制就很方便前端人员来使用了,可以看得出来,php反射机制会把对象所属类中的所有的方法以及使用方法告诉前端供前端人员调用。
以上都是个人的理解,纯属有感而发...
关于php反射机制的一些理解相关推荐
- UE4反射机制的通俗理解【代码生成】
UE4反射机制主要分为以下几个阶段 生成阶段:借助UHT生成对应包含了反射声明的反射代码 收集阶段:借助static自动注册方式,在模块加载的时候,把UCLASS注册,放在array中管理 注册阶段: ...
- UE4反射机制的通俗理解【生成第一个UClass】
上一篇我们讲到了利用static变量把构造函数指针以及生成的类信息都收集到了全局静态数组中.这一篇就要讲讲,收集好了之后,我们是怎么利用这些收集的信息来生成我们的UClass的. 上一篇最后说到了,I ...
- Java反射机制概念及应用场景
Java反射机制概念及应用场景 Java的反射机制相信大家在平时的业务开发过程中应该很少使用到,但是在一些基础框架的搭建上应用非常广泛,今天简单的总结学习一下. 1. 什么是反射机制? Java反射机 ...
- Java基础-反射机制
目录 1.反射机制概述 2.获取class的三种方式 2.1.Class.forName()方式 2.2.obj.getClass()方式 2.3..class方式 3.通过反射实例化对象 4.通过读 ...
- Java语言基础-反射机制、正则表达式
反射机制 反射机制是在运行状态中,对于任意一个类,都能知道这个类(class文件)的所有属性和方法. 对于任意一个对象,都能调用它的任意一个方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称 ...
- 哪些类用来实现java反射机制_JAVA反射机制
运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的"反射"机 ...
- Java反射机制笔记一
Java反射机制 15-1 Java反射机制概述 15-2 理解Class类并获取Class的实例 反射例程 15-3 类的加载与ClassLoader的理解 类的加载器例程 15-4 创建运行时类的 ...
- Python 反射机制之hasattr()、getattr()、setattr() 、delattr()函数
反射机制 先看看我对Java中反射机制的通俗理解:反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应 ...
- 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等
这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...
最新文章
- java 添加jbutton_java – 如何在JScrollPane上添加JButton?
- php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']
- 尚硅谷_jQuery_学习笔记
- 用户日志留存所采用的技术手段
- [react] 使用ES6的class定义的组件不支持mixins了,那用什么可以替代呢?
- CentOS下设置vim的tab键为4格
- dram sram利用 利用_使用量子力学技术的新型超低功耗存储器或将取代DRAM和Flash...
- 解决在Linux下安装Oracle时的中文乱码问题
- POJ 1201 Intervals
- 基于深度学习的身份证号码识别方法
- Cesium开发: Draco模型压缩
- R语言使用dplyr包计算dataframe分组聚合四分位距IQR值(四分位距(interquartile range, IQR),又称四分差)
- 校企合作,人才共育|岳阳开放大学校长乐艳华一行莅临云畅科技考察交流
- 时延、时间带宽积、RTT、利用率
- luogu4185 [USACO18JAN]MooTube Gold
- Java冷知识之——魔数(Magic Number)
- mysql查询至少学过学号为“s001”同学所有课的其他同学学号和姓名
- After succeed
- 用例与用例,参与者与参与者_参与通讯内容的30个想法
- SpringBoot集成MinIo实现资源库功能
热门文章
- 全面拥抱云原生应用研发的拐点已经到来
- 曾遭周鸿祎全网封杀的 360 猛将 :草根打工到 36 岁身家上亿的逆袭!
- 如何用Python画一只机器猫?| 原力计划
- 2020年,5 种 将死的编程语言!
- 如何利用 Google 开源的 TFCO 构建机器学习模型?
- 15 年经验专家解读 IIoT 的挑战及应对思路!
- 马云电脑水平曝光;快狗打车回应裁员50% ;华为邀请开发者加入应用商店 | 极客头条...
- 可视化编程真的有那么糟糕?
- 华为波兰销售总监被捕;苹果将推三款新 iPhone;ofo 用冻结款还债 | 极客头条...
- 滴滴是如何从零构建集中式实时计算平台的?| 技术头条