今天无意间看之前使用过的一个框架,想到这个框架可以根据controller的action中的注释来决定执行该动作是否需要进行身份验证,就想研究一下他是怎么实现的。找到了相应的实现位置,发现里面使用了大量的反射特性。刚好我对反射也不熟,所以就像研究研究。
首先了解到了一个函数:get_declared_classes()
,这个函数可以返回当前载入的所有类的类名组成的数组。于是我运行一下,看看php中内置的有哪几个反射类。内置的反射类如下,我们可以根据反射来分析这几个类的提供了哪些方法和属性,其实很多的IDE实现的代码自动提示使用的就是这个特性,我们也可以使用这种方法来研究下面的这些类例如下面的第一个反射异常类 : Reflection::export(new ReflectionClass('ReflectionException'));
ReflectionException
反射异常类,这个和普通的异常类基本功能一样,没有什么好说的
Reflection
反射基础类,这个类只提供了两个静态方法:
- Static methods [2] {
Method [ <internal:Reflection> static public method getModifierNames ] { // 这个方法我还不知道是做什么用的
- Parameters [1] {
Parameter #0 [ <required> $modifiers ]
}
}
Method [ <internal:Reflect