PHP-ReflectionClass-getMethods仅适用于当前类
目前我尝试将PHPUnit集成到我的项目中。 为了确保随着时间的推移100%的测试覆盖率,我想检查testclass中待测试类中是否存在所有方法。 所以我想我可以写一些PHP-ReflectionClass-getMethods仅适用于当前类,php,Php,目前我尝试将PHPUnit集成到我的项目中。 为了确保随着时间的推移100%的测试覆盖率,我想检查testclass中待测试类中是否存在所有方法。 所以我想我可以写一些 class MyClassTest extends PHPUnit_Framework_TestCase { private function _getClassFunctions($class) { $class = new ReflectionClass($class); retur
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
进行比较,将结果缩小到仅包含在所讨论的类中的方法。这正是我所需要的。非常感谢!:)