利用反射API查看类所在文件

前言

有些情况下, 不大清楚类究竟是在那个路径下, 只知道类名的情况下, 怎么查看类所在的路径呢?

在没有IDE智能提示的情况下还是有点麻烦的。这一次我们用的是PHP的反射API去搞定的。

PHP 反射API

什么是反射API

PHP5 的反射API是用来分析代码的一系列内置类, 可以获取类信息、方法参数信息、函数信息、属性等信息, 非常强大。

自然小小的获取类所在的文件名自然也不是神马大事了。

具体代码


$obj = new ReflectionClass('TimeCostStrategy');
$filename = $obj->getFileName();
echo $filename;

短短的三行代码就可以搞定了;

分析

这次的目的其实就是查找一个类, 看看这个类究竟是哪里定义的。

那我们要用的肯定是类信息获取的反射API了: ReflectionClass

而ReflectionClass::getFileName则可以获取定义类的文件名了, 也就是我们想要的玩意。

需要注意的是,这段代码需要放在可以正常加在Order类的代码中才可以, 否者
有可能会因为找不到这个类而抛异常。

反射API总览

  • Reflection:
    反射类
  • ReflectionClass:
    类信息和工具
  • ReflectionMethod:
    类方法信息和工具
  • ReflectionParameter:
    方法参数信息
  • ReflectionProperty:
    类属性信息
  • ReflectionFunction:
    函数信息和工具
  • ReflectionException:
    错误类
  • ReflectionExtension:
    PHP扩展信息

Leave a Reply

Your email address will not be published. Required fields are marked *


To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax