如何从方法列表中排除继承的方法,反射(PHP)


How to exclude inherited methods from method listing, Reflection (PHP)

我试图在PHP中使用反射列出类的所有方法/属性。这个简单的清单可以工作。

但是它也列出了基类的属性和方法。我该如何过滤呢?

谢谢!

注意,ReflectionMethod具有getDeclaringClass()方法。此方法返回在其中声明该方法的类。如果只显示在你的类中声明的方法,你应该试试:

$class = new ReflectionClass('YourClass');
foreach($class->getMethods() as $m) {
    if($m->getDeclaringClass()->getName() === 'YourClass') {
        echo $m->getName(), PHP_EOL;
    }
}

其中YourClass是这样的:

class YourClass extends DOMDocument {

    public function doSomething() {
        // ...
    }

    public function doSomethingElse() {
        // ...
    }
}