反射获取类中的方法的时候, 发现结果中包含了父类中的所有方法, 如何排除父类的方法?
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
ReflectionClass::getParentClass
ReflectionClass::getMethods
先获取子类的 methods,在获取 父类的 methods,你就可以过滤了。
慕哥6287543
TA贡献1831条经验 获得超10个赞
如果你的父类的方法修饰符用的跟子类都不一样的话可以使用filter参数去过滤
例如:ReflectionMethod::IS_STATIC
要是父类方法跟子类方法的修饰都一样的话那只能手动过滤一下了
下边是给出的过滤方式:
<?php
class A {
public function method1() {
}
public function method2() {
}
}
class B extends A {
public function method3() {
}
public function method4() {
}
}
//需要反射的变量类名
$class_name = 'B';
$class = new ReflectionClass($class_name);
$methods = $class->getMethods();
//获取到之后批量循环一下好了
foreach ($methods as $key => $val) {
if ($class_name != $val->class) {
unset($methods[$key]);
}
}
print_r($methods);
?>
- 3 回答
- 0 关注
- 975 浏览
添加回答
举报
0/150
提交
取消