PHP反射类ReflectionClass和ReflectionObject的使用方法


Posted in PHP onNovember 13, 2013

PHP中的扩展反射类,该扩展用来分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
看一个这样的问题,php类的成员变量没有在类中声明,而是在函数中声明,有什么不同?

class test{
    private $name;
    private $sex;
    function __construct(){
        $this->aaa='aaa';
    }
}$test=new test();
$reflect=new ReflectionClass($test);
$pro=$reflect->getDefaultProperties();
print_r($pro);//打印结果:Array ( [name] => [sex] => )
echo $test->aaa;//打印结果:aaa

在这个test类中,声明了两个成员变量$name和$sex,但是在构造函数中,又声明了一个变量$aaa,初始化类,使用反射类打印默认成员属性只有声明的两个成员变量属性,但是打印类的$aaa变量发现还是可以输出结果。
请问类的成员变量不用声明,在函数中声明也是可以的吗,有什么区别?
在你这个例子中,使用ReflectionClass是不恰当的,因为__construct只有在实例化class时,才会执行。
也就是说ReflectionClass更多的是反射类声明时的结构,而不是类实例化后的结构,所以没有输出属性aaa是正确,因为属性aaa确实是(在类声明时)不存在的。
那么怎么看属性aaa呢,应该用ReflectionObject反射实例化后的结构,例如
<?php
class test{
    private $name;
    private $sex;
    function __construct(){
        $this->aaa='aaa';
    }
}
$test=new test();$reflect=new ReflectionObject($test);
$pro=$reflect->getProperties();
print_r($pro);
 

经过实例化以后,属性aaa才会存在,这时你就能看到属性aaa了
因为php是“动态”语言,所以可以类的成员变量不用声明,在函数中声明也是可以的。
PHP 相关文章推荐
PHP_MySQL教程-第一天
Mar 18 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
解析php时间戳与日期的转换
Jun 06 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
Laravel中间件实现原理详解
Oct 09 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
php堆排序(heapsort)练习
Nov 13 #PHP
php生成EAN_13标准条形码实例
Nov 13 #PHP
使用php计算排列组合的方法
Nov 13 #PHP
测试php函数的方法
Nov 13 #PHP
PHP中判断变量为空的几种方法小结
Nov 12 #PHP
php不允许用户提交空表单(php空值判断)
Nov 12 #PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 #PHP
You might like
php 地区分类排序算法
2013/07/01 PHP
php阳历转农历优化版
2016/08/08 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
python模拟Django框架实例
2016/05/17 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
Python内存映射文件读写方式
2020/04/24 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
学校消防演习方案
2014/02/19 职场文书
机关出纳岗位职责
2014/04/03 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
中考学习决心书
2015/02/04 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
创业计划书详解
2019/07/19 职场文书
python 实现的截屏工具
2021/05/08 Python
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang