php反射获取勒种的所有方法, 如何排除父类的方法

反射获取类中的方法的时候, 发现结果中包含了父类中的所有方法, 如何排除父类的方法?

慕容708150
浏览 983回答 3
3回答

侃侃无极

用ReflectionMethod::getDeclaringClass 和本类做比较.

紫衣仙女

ReflectionClass::getParentClassReflectionClass::getMethods 先获取子类的 methods,在获取 父类的 methods,你就可以过滤了。

慕哥6287543

如果你的父类的方法修饰符用的跟子类都不一样的话可以使用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); ?>
打开App,查看更多内容
随时随地看视频慕课网APP