diff --git a/src/Symfony/Components/DependencyInjection/Container.php b/src/Symfony/Components/DependencyInjection/Container.php index 28f66cbb608c..2fb8be769a62 100644 --- a/src/Symfony/Components/DependencyInjection/Container.php +++ b/src/Symfony/Components/DependencyInjection/Container.php @@ -194,14 +194,14 @@ public function getService($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_RE throw new \InvalidArgumentException(sprintf('A service id should be a string (%s given).', str_replace("\n", '', var_export($id, true)))); } - if (isset($this->services[$id])) + if (method_exists($this, $method = 'get'.self::camelize($id).'Service')) { - return $this->services[$id]; + return $this->$method(); } - if (method_exists($this, $method = 'get'.self::camelize($id).'Service')) + if (isset($this->services[$id])) { - return $this->$method(); + return $this->services[$id]; } if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) diff --git a/tests/unit/Symfony/Components/DependencyInjection/ContainerTest.php b/tests/unit/Symfony/Components/DependencyInjection/ContainerTest.php index 34e660d10e23..00eaa1a9a69b 100644 --- a/tests/unit/Symfony/Components/DependencyInjection/ContainerTest.php +++ b/tests/unit/Symfony/Components/DependencyInjection/ContainerTest.php @@ -155,7 +155,7 @@ protected function getFoo_BazService() $t->ok($sc->hasService('bar'), '->hasService() returns true if the service has been defined as a getXXXService() method'); $sc->setService('bar', $bar = new stdClass()); -$t->is(spl_object_hash($sc->getService('bar')), spl_object_hash($bar), '->getService() prefers to return a service defined with setService() than one defined with a getXXXService() method'); +$t->isnt(spl_object_hash($sc->getService('bar')), spl_object_hash($bar), '->getService() prefers to return a service defined with a getXXXService() method than one defined with setService()'); try {