From a46270a61a8f8d1b7431038f785e5c33391aff29 Mon Sep 17 00:00:00 2001 From: Ener-Getick Date: Sat, 5 Mar 2016 12:41:21 +0100 Subject: [PATCH] Don't use reflections when possible --- src/Symfony/Component/DependencyInjection/Container.php | 5 ++--- .../Tests/Normalizer/GetSetMethodNormalizerTest.php | 5 +++++ .../Component/Validator/Mapping/PropertyMetadata.php | 7 +++---- 3 files changed, 10 insertions(+), 7 deletions(-) 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;