[DependencyInjection] changed the order of priority when a service is both defined with setService() and with a getXXXService() method

This commit is contained in:
Fabien Potencier 2010-01-22 07:58:07 +01:00
parent dd759bd0b6
commit 2ac6faaa0b
2 changed files with 6 additions and 6 deletions

View File

@ -194,16 +194,16 @@ class Container implements ContainerInterface, \ArrayAccess, \Iterator
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]))
{
return $this->services[$id];
}
if (method_exists($this, $method = 'get'.self::camelize($id).'Service'))
{
return $this->$method();
}
if (isset($this->services[$id]))
{
return $this->services[$id];
}
if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior)
{
throw new \InvalidArgumentException(sprintf('The service "%s" does not exist.', $id));

View File

@ -155,7 +155,7 @@ $t->is(spl_object_hash($sc->getService('bar')), spl_object_hash($sc->__bar), '->
$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
{