Skip to content

Commit

Permalink
[DependencyInjection] fixed Builder when trying to override an alias …
Browse files Browse the repository at this point in the history
…with a definition or the other way around
  • Loading branch information
fabpot committed Feb 2, 2010
1 parent dd5c73b commit 38c4b29
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
31 changes: 29 additions & 2 deletions src/Symfony/Components/DependencyInjection/Builder.php
Expand Up @@ -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);
Expand Down Expand Up @@ -136,8 +137,8 @@ public function merge(BuilderConfiguration $configuration = null)
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)
Expand All @@ -162,6 +163,30 @@ public function getServiceIds()
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.
*
Expand All @@ -170,6 +195,8 @@ public function getServiceIds()
*/
public function setAlias($alias, $id)
{
unset($this->definitions[$alias]);

$this->aliases[$alias] = $id;
}

Expand Down
Expand Up @@ -157,6 +157,8 @@ public function setParameter($name, $value)
*/
public function setAlias($alias, $id)
{
unset($this->definitions[$alias]);

$this->aliases[$alias] = $id;
}

Expand Down

0 comments on commit 38c4b29

Please sign in to comment.