PHP-ReflectionClass-getMethods仅适用于当前类

PHP-ReflectionClass-getMethods仅适用于当前类,php,Php,目前我尝试将PHPUnit集成到我的项目中。 为了确保随着时间的推移100%的测试覆盖率,我想检查testclass中待测试类中是否存在所有方法。 所以我想我可以写一些 class MyClassTest extends PHPUnit_Framework_TestCase { private function _getClassFunctions($class) { $class = new ReflectionClass($class); retur

目前我尝试将PHPUnit集成到我的项目中。 为了确保随着时间的推移100%的测试覆盖率,我想检查testclass中待测试类中是否存在所有方法。 所以我想我可以写一些

class MyClassTest extends PHPUnit_Framework_TestCase {

    private function _getClassFunctions($class) {
        $class = new ReflectionClass($class);
        return $class->getMethods();
    }

    public function testCompareFunctionCount() {
        $this->assertEquals($this->_getClassFunctions('MyClass'), $this->_getClassFunctions(__CLASS__));
    }
}
然而,似乎ReflectionClass::getMethods()不仅计算类本身的方法,而且还计算所有扩展类的方法。 有没有办法防止这种行为?还是我完全错了?我在以前的文章中读到,ReflectionClass::getMethods()在较旧的PHP版本上无法正常工作,但我认为现在可能已经解决了(那些文章已经有4年多的历史了…)

我使用PHP5.4.5。

您必须自己做一些工作:

private function\u getClassFunctions($className){
$class=新的ReflectionClass($className);
$result=array();
foreach($class->getMethods()作为$method){
如果($method->class==$className){
$result[]=$method;
}
}
返回$result;
}

$method->class
$className
进行比较,将结果缩小到仅包含在所讨论的类中的方法。

这正是我所需要的。非常感谢!:)