Skip to content

Commit

Permalink
[DependencyInjection] added a way to configure extensions in plain PH…
Browse files Browse the repository at this point in the history
…P, added a fluent interface to BuilderConfiguration
  • Loading branch information
fabpot committed Feb 14, 2010
1 parent 4735bf8 commit 9e5718c
Showing 1 changed file with 61 additions and 0 deletions.
Expand Up @@ -2,6 +2,8 @@

namespace Symfony\Components\DependencyInjection;

use Symfony\Components\DependencyInjection\Loader\Loader;

/*
* This file is part of the symfony framework.
*
Expand Down Expand Up @@ -45,16 +47,22 @@ public function getResources()
* Adds a resource for this configuration.
*
* @param ResourceInterface $resource A resource instance
*
* @return BuilderConfiguration The current instance
*/
public function addResource(ResourceInterface $resource)
{
$this->resources[] = $resource;

return $this;
}

/**
* Merges a BuilderConfiguration with the current one.
*
* @param BuilderConfiguration $configuration
*
* @return BuilderConfiguration The current instance
*/
public function merge(BuilderConfiguration $configuration = null)
{
Expand All @@ -71,12 +79,35 @@ public function merge(BuilderConfiguration $configuration = null)
{
$this->addResource($resource);
}

return $this;
}

/**
* Merges the configuration given by an extension.
*
* @param $key string The extension tag to load (namespace.tag)
* @param $values array An array of values to customize the extension
*
* @return BuilderConfiguration The current instance
*/
public function mergeExtension($key, array $values = array())
{
list($namespace, $tag) = explode('.', $key);

$config = Loader::getExtension($namespace)->load($tag, $values);

$this->merge($config);

return $this;
}

/**
* Sets the service container parameters.
*
* @param array $parameters An array of parameters
*
* @return BuilderConfiguration The current instance
*/
public function setParameters(array $parameters)
{
Expand All @@ -85,16 +116,22 @@ public function setParameters(array $parameters)
{
$this->parameters[strtolower($key)] = $value;
}

return $this;
}

/**
* Adds parameters to the service container parameters.
*
* @param array $parameters An array of parameters
*
* @return BuilderConfiguration The current instance
*/
public function addParameters(array $parameters)
{
$this->setParameters(array_merge($this->parameters, $parameters));

return $this;
}

/**
Expand Down Expand Up @@ -143,36 +180,48 @@ public function getParameter($name)
*
* @param string $name The parameter name
* @param mixed $parameters The parameter value
*
* @return BuilderConfiguration The current instance
*/
public function setParameter($name, $value)
{
$this->parameters[strtolower($name)] = $value;

return $this;
}

/**
* Sets an alias for an existing service.
*
* @param string $alias The alias to create
* @param string $id The service to alias
*
* @return BuilderConfiguration The current instance
*/
public function setAlias($alias, $id)
{
unset($this->definitions[$alias]);

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

return $this;
}

/**
* Adds definition aliases.
*
* @param array $aliases An array of aliases
*
* @return BuilderConfiguration The current instance
*/
public function addAliases(array $aliases)
{
foreach ($aliases as $alias => $id)
{
$this->setAlias($alias, $id);
}

return $this;
}

/**
Expand Down Expand Up @@ -221,36 +270,48 @@ public function getAlias($alias)
*
* @param string $id The identifier
* @param Definition $definition A Definition instance
*
* @return BuilderConfiguration The current instance
*/
public function setDefinition($id, Definition $definition)
{
unset($this->aliases[$id]);

return $this->definitions[$id] = $definition;

return $this;
}

/**
* Adds the definitions.
*
* @param array $definitions An array of definitions
*
* @return BuilderConfiguration The current instance
*/
public function addDefinitions(array $definitions)
{
foreach ($definitions as $id => $definition)
{
$this->setDefinition($id, $definition);
}

return $this;
}

/**
* Sets the definitions.
*
* @param array $definitions An array of definitions
*
* @return BuilderConfiguration The current instance
*/
public function setDefinitions(array $definitions)
{
$this->definitions = array();
$this->addDefinitions($definitions);

return $this;
}

/**
Expand Down

0 comments on commit 9e5718c

Please sign in to comment.