源码阅读-ThinkPHP-附录C-反射API
2017-06-06 本文已影响0人
苏近之2017
反射API 涉及的类
- Reflection
- ReflectionClass
- ReflectionZendExtension
- ReflectionExtension
- ReflectionFunction
- ReflectionFunctionAbstract
- ReflectionMethod
- ReflectionObject
- ReflectionParameter
- ReflectionProperty
ReflectionClass 分析
作用是报告一类的有关信息。
export
用于输出一个类。
示例:
class User{}
ReflectionClass::export('User');
输出:
Class [ class User ] {
@@ D:\path\test.php 3-5
- Constants [0] { }
- Static properties [0] { }
- Static methods [0] { }
- Properties [0] { }
- Methods [0] { } }
hasMothed
用于判断是否拥有该方法。
getMothed
获取一个类方法的 ReflectionMethod 。
invoke
用于执行这个方法。
ReflectionMethod 分析
作用是报告了一个方法的有关信息。
invoke && invokeArgs
作用是执行一个类的方法。
invoke
和invokeArgs
的区别是。
示例:
class User{
public function sayHello(){
echo 'Hello';
}
}
$reflectionMethod = new ReflectionMethod('User','sayHello');
$reflectionMethod->invoke(new User());
isXxx 方法
以下代码,下面子章节公用:
class User{
public function sayHello(){
echo 'Hello';
}
}
$reflectionMethod = new ReflectionMethod('User','sayHello');
isPublic
用于判断方法是否是公开方法。
$reflectionMethod->isPublic(); // TRUE
isStatic
用于判断是否是静态方法。
$reflectionMethod->isStaic() // FALSE