Skip to content

Commit

Permalink
resolve class parameters in service factories
Browse files Browse the repository at this point in the history
  • Loading branch information
xabbuh committed Mar 16, 2015
1 parent be05344 commit 8bda37c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
Expand Up @@ -39,6 +39,13 @@ public function process(ContainerBuilder $container)
$definition->setArguments($parameterBag->resolveValue($definition->getArguments()));
$definition->setFactoryClass($parameterBag->resolveValue($definition->getFactoryClass()));

$factory = $definition->getFactory();

if (is_array($factory) && isset($factory[0])) {
$factory[0] = $parameterBag->resolveValue($factory[0]);
$definition->setFactory($factory);
}

$calls = array();
foreach ($definition->getMethodCalls() as $name => $arguments) {
$calls[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($arguments);
Expand Down
Expand Up @@ -38,6 +38,11 @@ public function testFactoryClassParametersShouldBeResolved()
$this->assertSame('FooFactory', $this->fooDefinition->getFactoryClass());
}

public function testClassOfFactoryParametersShouldBeResolved()
{
$this->assertSame(array('FooFactory', 'getFoo'), $this->fooDefinition->getFactory());
}

public function testArgumentParametersShouldBeResolved()
{
$this->assertSame(array('bar', 'baz'), $this->fooDefinition->getArguments());
Expand Down Expand Up @@ -79,6 +84,7 @@ private function createContainerBuilder()

$fooDefinition = $containerBuilder->register('foo', '%foo.class%');
$fooDefinition->setFactoryClass('%foo.factory.class%');
$fooDefinition->setFactory(array('%foo.factory.class%', 'getFoo'));
$fooDefinition->setArguments(array('%foo.arg1%', '%foo.arg2%'));
$fooDefinition->addMethodCall('%foo.method%', array('%foo.arg1%', '%foo.arg2%'));
$fooDefinition->setProperty('%foo.property.name%', '%foo.property.value%');
Expand Down

0 comments on commit 8bda37c

Please sign in to comment.