reflection
PHP的反射ReflectionClass和ReflectMethod
ReflectClass
$class = new ReflectionClass('Person'); // 建立 Person这个类的反射类 $args = $class->getProperties(); $instance = $class->newInstanceArgs($args); // 相当于实例化Person 类 $class->getMethods(); $class->hasMethod(string); $class->getMethod(string) $private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE); ReflectionProperty::IS_STATIC ReflectionProperty::IS_PUBLIC ReflectionProperty::IS_PROTECTED ReflectionProperty::IS_PRIVATE //执行函数的三种方法 $instance->getName(); // 执行Person 里的方法getName // 或者: $method = $class->getMethod('getName'); // 获取Person 类中的getName方法 $method->invoke($instance); // 执行getName 方法 // 或者: $method = $class->getMethod('setName'); // 获取Person 类中的setName方法 $method->invokeArgs($instance, array('snsgou.com'));
ReflectMethod
// 执行detail方法 $method = new ReflectionMethod('Person', 'getName'); if ($method->isPublic() && !$method->isStatic()) { echo 'Action is right'; } echo $method->getNumberOfParameters(); // 参数个数 echo $method->getParameters(); // 参数对象数组