[Validator] Fixed StaticMethodLoader when used with abstract methods.

This commit is contained in:
Jakub Zalas 2012-04-13 21:40:36 +01:00
parent 098b934410
commit 089188f603
2 changed files with 14 additions and 1 deletions

View File

@ -37,7 +37,7 @@ class StaticMethodLoader implements LoaderInterface
throw new MappingException(sprintf('The method %s::%s should be static', $reflClass->getName(), $this->methodName));
}
if ($reflMethod->getDeclaringClass()->getName() != $reflClass->getName()) {
if ($reflClass->isAbstract() || $reflMethod->getDeclaringClass()->getName() != $reflClass->getName()) {
return false;
}

View File

@ -35,6 +35,14 @@ class StaticMethodLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($loader->loadClassMetadata($metadata));
}
public function testLoadClassMetadataReturnsFalseIfMethodIsAbstract()
{
$loader = new StaticMethodLoader('loadMetadata');
$metadata = new ClassMetadata(__NAMESPACE__.'\AbstractStaticLoaderEntity');
$this->assertFalse($loader->loadClassMetadata($metadata));
}
public function testLoadClassMetadata()
{
$loader = new StaticMethodLoader('loadMetadata');
@ -80,3 +88,8 @@ class BaseStaticLoaderDocument
$metadata->addConstraint(new ConstraintA());
}
}
abstract class AbstractStaticLoaderEntity
{
abstract public static function loadMetadata(ClassMetadata $metadata);
}