diff --git a/src/Symfony/Component/DependencyInjection/Container.php b/src/Symfony/Component/DependencyInjection/Container.php index effa128eaa..14dc99c57d 100644 --- a/src/Symfony/Component/DependencyInjection/Container.php +++ b/src/Symfony/Component/DependencyInjection/Container.php @@ -363,9 +363,8 @@ class Container implements IntrospectableContainerInterface public function getServiceIds() { $ids = array(); - $r = new \ReflectionClass($this); - foreach ($r->getMethods() as $method) { - if (preg_match('/^get(.+)Service$/', $method->name, $match)) { + foreach (get_class_methods($this) as $method) { + if (preg_match('/^get(.+)Service$/', $method, $match)) { $ids[] = self::underscore($match[1]); } } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php index d870c82e0f..f8350d85ee 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php @@ -298,6 +298,11 @@ class GetSetDummy { throw new \RuntimeException('Dummy::otherMethod() should not be called'); } + + protected function getPrivate() + { + throw new \RuntimeException('Dummy::getPrivate() should not be called'); + } } class GetConstructorDummy diff --git a/src/Symfony/Component/Validator/Mapping/PropertyMetadata.php b/src/Symfony/Component/Validator/Mapping/PropertyMetadata.php index f14b98ce6e..8b8c0ad306 100644 --- a/src/Symfony/Component/Validator/Mapping/PropertyMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/PropertyMetadata.php @@ -45,12 +45,11 @@ class PropertyMetadata extends MemberMetadata */ protected function newReflectionMember($objectOrClassName) { - $class = new \ReflectionClass($objectOrClassName); - while (!$class->hasProperty($this->getName())) { - $class = $class->getParentClass(); + while (!property_exists($objectOrClassName, $this->getName())) { + $objectOrClassName = get_parent_class($objectOrClassName); } - $member = new \ReflectionProperty($class->getName(), $this->getName()); + $member = new \ReflectionProperty($objectOrClassName, $this->getName()); $member->setAccessible(true); return $member;