有时候分析源码时,会被博大精深的层层代码搞得晕头转向,不知道类是定义在哪个文件里的,有时候IDE所提供的方法声明未必准确。在这种情况下,我们可以利用反射找到类所在的文件。

在你发现实例化类的地方(例如class1中发现了class2的实例化,但是你不知道class2定义在哪个文件),输入以下代码:

$object = new ReflectionClass($b);
$methods = $object->getMethods(); //这里之所以用getMethods(),是因为我们并不知道此类有哪些方法,所以全部获取,然后取第0个
$method = $methods[0];
$declaringclass = $method->getDeclaringClass();
$filename = $declaringclass->getFilename();

此时的$filename就是类所在的文件名。

当然,你可以写成

$filename = (new ReflectionClass($a))->getMethods()[0]->getDeclaringClass()->getFilename();

PHP利用反射根据类名反向寻找类所在文件相关推荐

  1. CN.Text开发笔记—利用反射将数据读入实体类

    在实际开发中,我们经常需要从数据库中读取数据并赋值给实体类的相应属性.在.Text的DataDTOProvider中存在大量这样的代码, 比如: public Role[] GetRoles(int  ...

  2. java 反射 单例类_利用反射机制破坏单例模式

    简介 利用反射机制破坏了单例模式,这里以懒汉单例模式为例子进行操作. 之前利用反射也是改变了类中的private变量. 类中的private变量真的private么? 正常的单例模式的实现 这里采用了 ...

  3. java反射是运行时,Java反射(三)在运行时利用反射分析对象

    在运行时利用反射分析对象,其实就是利用反射来获得或者设置类的域.举例如下: 有一个Student类: package testreflection; public class Student { pr ...

  4. C# 知识点笔记:IEnumerable的使用,利用反射动态调用方法

    IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...

  5. 利用反射实现类的动态加载

    为什么80%的码农都做不了架构师?>>>    //首先定义一个接口来隔离类: public interface Operator { // public java.util.Lis ...

  6. C# 反射 通过类名创建类实例

    "反射"其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 1.假设你要反射一个 DLL 中的类,并且没有引用 ...

  7. 利用反射动态实例化类执行方法并传值

    /// <summary>         /// 利用反射动态实例化类执行方法并传值         /// </summary>         /// <param ...

  8. 利用反射技术修改类中的字段(成员变量的反射)

    题目:利用反射技术修改类中的字段及成员变量的反射 作者:Vashon 一.首先定义一个类如下: class ReflectPoint {private int x; //私有的public int y ...

  9. 利用反射机制创建新类的两种方式及比较

    [0]README 0.1) 本文描述+源代码均 转自 http://blog.csdn.net/fenglibing/article/details/4531033 , 旨在深入理解 如何利用反射机 ...

最新文章

  1. Ajax+Node.js前后端交互最佳入门实践(05)
  2. 安卓学习-界面-ui-Toast
  3. 【学习笔记】JSON基础概念简介
  4. 【NLP实战】Task2:特征处理
  5. oracle 存储过程字符替换,Oracle存储过程常用字符串处理函数整理
  6. Linux下的删除命令
  7. 如何更改OST、OAB文件的默认路径?
  8. vue 出现Elements in iteration expect to have 'v-bind:key' directives
  9. 《白帽子讲web安全》学习笔记 (3)
  10. TFS 2005安装的注意事项
  11. JavaScript语言精粹 ——笔记
  12. lua学习笔记(三)
  13. 计蒜客 - T1012 A*B问题
  14. 共享单车需求预测问题:建模篇
  15. c语言汇率转换代码_C语言人民币转换代码..doc
  16. 【GIS开发】批量下载和拼接地图瓦片(Python)
  17. 安徽太极计算机 刘建春,阅读理解的检测作业
  18. 深度学习论文精读05——用于乳腺癌组织病理学图像分类的深度特征
  19. 数据恢复工具有哪些? 十个最好的数据恢复软件
  20. mysql时间戳与PHP时间戳,php – 当mysql时间戳gt; 20分钟时删除时间戳比较

热门文章

  1. HTML 5 样式指南和代码约定
  2. 分布式事务之最终一致的Mq实现
  3. LaTeX集合运算相关命令
  4. 清华大学计算机图形学课程
  5. 破译手势在对话中的意义
  6. 深度学习Deep learning From Image to Sequence
  7. 利用Hadoop Streaming处理二进制格式文件
  8. 鸟哥的Linux私房菜(服务器)- 第六章、 Linux 网络侦错
  9. 趣味编程:从字符串中提取信息(参考答案 - 上)
  10. Linux学习笔记6——文本处理相关命令