[DependencyInjection] fixed Builder when trying to override an alias with a definition or the other way around

This commit is contained in:
Fabien Potencier 2010-02-02 11:45:21 +01:00
parent dd5c73b5db
commit 38c4b29555
2 changed files with 31 additions and 2 deletions

View File

@ -32,6 +32,7 @@ class Builder extends Container
*/
public function setService($id, $service)
{
unset($this->definitions[$id]);
unset($this->aliases[$id]);
parent::setService($id, $service);
@ -136,8 +137,8 @@ class Builder extends Container
return;
}
$this->aliases = array_merge($this->aliases, $configuration->getAliases());
$this->definitions = array_merge($this->definitions, $configuration->getDefinitions());
$this->addDefinitions($configuration->getDefinitions());
$this->addAliases($configuration->getAliases());
$currentParameters = $this->getParameters();
foreach ($configuration->getParameters() as $key => $value)
@ -162,6 +163,30 @@ class Builder extends Container
return array_unique(array_merge(array_keys($this->getDefinitions()), array_keys($this->aliases), parent::getServiceIds()));
}
/**
* Adds the service aliases.
*
* @param array $aliases An array of aliases
*/
public function addAliases(array $aliases)
{
foreach ($aliases as $alias => $id)
{
$this->setAlias($alias, $id);
}
}
/**
* Sets the service aliases.
*
* @param array $definitions An array of service definitions
*/
public function setAliases(array $aliases)
{
$this->aliases = array();
$this->addAliases($aliases);
}
/**
* Sets an alias for an existing service.
*
@ -170,6 +195,8 @@ class Builder extends Container
*/
public function setAlias($alias, $id)
{
unset($this->definitions[$alias]);
$this->aliases[$alias] = $id;
}

View File

@ -157,6 +157,8 @@ class BuilderConfiguration
*/
public function setAlias($alias, $id)
{
unset($this->definitions[$alias]);
$this->aliases[$alias] = $id;
}