[DependencyInjection] fixes #9815 Syntax error in PHP dumper
This commit is contained in:
parent
baaf9b63cd
commit
e00b0f34bd
@ -490,7 +490,7 @@ class PhpDumper extends Dumper
|
|||||||
$class = $this->dumpValue($callable[0]);
|
$class = $this->dumpValue($callable[0]);
|
||||||
// If the class is a string we can optimize call_user_func away
|
// If the class is a string we can optimize call_user_func away
|
||||||
if (strpos($class, "'") === 0) {
|
if (strpos($class, "'") === 0) {
|
||||||
return sprintf(" \%s::%s(\$%s);\n", substr($class, 1, -1), $callable[1], $variableName);
|
return sprintf(" %s::%s(\$%s);\n", $this->dumpLiteralClass($class), $callable[1], $variableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf(" call_user_func(array(%s, '%s'), \$%s);\n", $this->dumpValue($callable[0]), $callable[1], $variableName);
|
return sprintf(" call_user_func(array(%s, '%s'), \$%s);\n", $this->dumpValue($callable[0]), $callable[1], $variableName);
|
||||||
@ -701,7 +701,7 @@ EOF;
|
|||||||
|
|
||||||
// If the class is a string we can optimize call_user_func away
|
// If the class is a string we can optimize call_user_func away
|
||||||
if (strpos($class, "'") === 0) {
|
if (strpos($class, "'") === 0) {
|
||||||
return sprintf(" $return{$instantiation}\%s::%s(%s);\n", substr($class, 1, -1), $definition->getFactoryMethod(), $arguments ? implode(', ', $arguments) : '');
|
return sprintf(" $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $definition->getFactoryMethod(), $arguments ? implode(', ', $arguments) : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf(" $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($definition->getFactoryClass()), $definition->getFactoryMethod(), $arguments ? ', '.implode(', ', $arguments) : '');
|
return sprintf(" $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($definition->getFactoryClass()), $definition->getFactoryMethod(), $arguments ? ', '.implode(', ', $arguments) : '');
|
||||||
@ -718,7 +718,7 @@ EOF;
|
|||||||
return sprintf(" \$class = %s;\n\n $return{$instantiation}new \$class(%s);\n", $class, implode(', ', $arguments));
|
return sprintf(" \$class = %s;\n\n $return{$instantiation}new \$class(%s);\n", $class, implode(', ', $arguments));
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf(" $return{$instantiation}new \\%s(%s);\n", substr(str_replace('\\\\', '\\', $class), 1, -1), implode(', ', $arguments));
|
return sprintf(" $return{$instantiation}new %s(%s);\n", $this->dumpLiteralClass($class), implode(', ', $arguments));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1248,6 +1248,18 @@ EOF;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dumps a string to a literal (aka PHP Code) class value.
|
||||||
|
*
|
||||||
|
* @param string $class
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function dumpLiteralClass($class)
|
||||||
|
{
|
||||||
|
return '\\'.substr(str_replace('\\\\', '\\', $class), 1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dumps a parameter
|
* Dumps a parameter
|
||||||
*
|
*
|
||||||
|
@ -40,7 +40,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$definitions = array(
|
$definitions = array(
|
||||||
'foo' => new Definition('FooClass'),
|
'foo' => new Definition('Bar\FooClass'),
|
||||||
'bar' => new Definition('BarClass'),
|
'bar' => new Definition('BarClass'),
|
||||||
);
|
);
|
||||||
$builder->setDefinitions($definitions);
|
$builder->setDefinitions($definitions);
|
||||||
@ -69,7 +69,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testRegister()
|
public function testRegister()
|
||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('foo', 'FooClass');
|
$builder->register('foo', 'Bar\FooClass');
|
||||||
$this->assertTrue($builder->hasDefinition('foo'), '->register() registers a new service definition');
|
$this->assertTrue($builder->hasDefinition('foo'), '->register() registers a new service definition');
|
||||||
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $builder->getDefinition('foo'), '->register() returns the newly created Definition instance');
|
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Definition', $builder->getDefinition('foo'), '->register() returns the newly created Definition instance');
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$this->assertFalse($builder->has('foo'), '->has() returns false if the service does not exist');
|
$this->assertFalse($builder->has('foo'), '->has() returns false if the service does not exist');
|
||||||
$builder->register('foo', 'FooClass');
|
$builder->register('foo', 'Bar\FooClass');
|
||||||
$this->assertTrue($builder->has('foo'), '->has() returns true if a service definition exists');
|
$this->assertTrue($builder->has('foo'), '->has() returns true if a service definition exists');
|
||||||
$builder->set('bar', new \stdClass());
|
$builder->set('bar', new \stdClass());
|
||||||
$this->assertTrue($builder->has('bar'), '->has() returns true if a service exists');
|
$this->assertTrue($builder->has('bar'), '->has() returns true if a service exists');
|
||||||
@ -259,11 +259,11 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testCreateService()
|
public function testCreateService()
|
||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('foo1', 'FooClass')->setFile(__DIR__.'/Fixtures/includes/foo.php');
|
$builder->register('foo1', 'Bar\FooClass')->setFile(__DIR__.'/Fixtures/includes/foo.php');
|
||||||
$this->assertInstanceOf('\FooClass', $builder->get('foo1'), '->createService() requires the file defined by the service definition');
|
$this->assertInstanceOf('\Bar\FooClass', $builder->get('foo1'), '->createService() requires the file defined by the service definition');
|
||||||
$builder->register('foo2', 'FooClass')->setFile(__DIR__.'/Fixtures/includes/%file%.php');
|
$builder->register('foo2', 'Bar\FooClass')->setFile(__DIR__.'/Fixtures/includes/%file%.php');
|
||||||
$builder->setParameter('file', 'foo');
|
$builder->setParameter('file', 'foo');
|
||||||
$this->assertInstanceOf('\FooClass', $builder->get('foo2'), '->createService() replaces parameters in the file provided by the service definition');
|
$this->assertInstanceOf('\Bar\FooClass', $builder->get('foo2'), '->createService() replaces parameters in the file provided by the service definition');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -273,13 +273,13 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
|
|
||||||
$builder->register('foo1', 'FooClass')->setFile(__DIR__.'/Fixtures/includes/foo.php');
|
$builder->register('foo1', 'Bar\FooClass')->setFile(__DIR__.'/Fixtures/includes/foo.php');
|
||||||
$builder->getDefinition('foo1')->setLazy(true);
|
$builder->getDefinition('foo1')->setLazy(true);
|
||||||
|
|
||||||
$foo1 = $builder->get('foo1');
|
$foo1 = $builder->get('foo1');
|
||||||
|
|
||||||
$this->assertSame($foo1, $builder->get('foo1'), 'The same proxy is retrieved on multiple subsequent calls');
|
$this->assertSame($foo1, $builder->get('foo1'), 'The same proxy is retrieved on multiple subsequent calls');
|
||||||
$this->assertSame('FooClass', get_class($foo1));
|
$this->assertSame('Bar\FooClass', get_class($foo1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -300,7 +300,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('bar', 'stdClass');
|
$builder->register('bar', 'stdClass');
|
||||||
$builder->register('foo1', 'FooClass')->addArgument(array('foo' => '%value%', '%value%' => 'foo', new Reference('bar'), '%%unescape_it%%'));
|
$builder->register('foo1', 'Bar\FooClass')->addArgument(array('foo' => '%value%', '%value%' => 'foo', new Reference('bar'), '%%unescape_it%%'));
|
||||||
$builder->setParameter('value', 'bar');
|
$builder->setParameter('value', 'bar');
|
||||||
$this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->arguments, '->createService() replaces parameters and service references in the arguments provided by the service definition');
|
$this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar'), '%unescape_it%'), $builder->get('foo1')->arguments, '->createService() replaces parameters and service references in the arguments provided by the service definition');
|
||||||
}
|
}
|
||||||
@ -312,7 +312,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('bar', 'stdClass');
|
$builder->register('bar', 'stdClass');
|
||||||
$builder->register('foo1', 'FooClass')->setFactoryClass('FooClass')->setFactoryMethod('getInstance')->addArgument(array('foo' => '%value%', '%value%' => 'foo', new Reference('bar')));
|
$builder->register('foo1', 'Bar\FooClass')->setFactoryClass('Bar\FooClass')->setFactoryMethod('getInstance')->addArgument(array('foo' => '%value%', '%value%' => 'foo', new Reference('bar')));
|
||||||
$builder->setParameter('value', 'bar');
|
$builder->setParameter('value', 'bar');
|
||||||
$this->assertTrue($builder->get('foo1')->called, '->createService() calls the factory method to create the service instance');
|
$this->assertTrue($builder->get('foo1')->called, '->createService() calls the factory method to create the service instance');
|
||||||
$this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar')), $builder->get('foo1')->arguments, '->createService() passes the arguments to the factory method');
|
$this->assertEquals(array('foo' => 'bar', 'bar' => 'foo', $builder->get('bar')), $builder->get('foo1')->arguments, '->createService() passes the arguments to the factory method');
|
||||||
@ -337,7 +337,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('bar', 'stdClass');
|
$builder->register('bar', 'stdClass');
|
||||||
$builder->register('foo1', 'FooClass')->addMethodCall('setBar', array(array('%value%', new Reference('bar'))));
|
$builder->register('foo1', 'Bar\FooClass')->addMethodCall('setBar', array(array('%value%', new Reference('bar'))));
|
||||||
$builder->setParameter('value', 'bar');
|
$builder->setParameter('value', 'bar');
|
||||||
$this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
|
$this->assertEquals(array('bar', $builder->get('bar')), $builder->get('foo1')->bar, '->createService() replaces the values in the method calls arguments');
|
||||||
}
|
}
|
||||||
@ -348,23 +348,23 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testCreateServiceConfigurator()
|
public function testCreateServiceConfigurator()
|
||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('foo1', 'FooClass')->setConfigurator('sc_configure');
|
$builder->register('foo1', 'Bar\FooClass')->setConfigurator('sc_configure');
|
||||||
$this->assertTrue($builder->get('foo1')->configured, '->createService() calls the configurator');
|
$this->assertTrue($builder->get('foo1')->configured, '->createService() calls the configurator');
|
||||||
|
|
||||||
$builder->register('foo2', 'FooClass')->setConfigurator(array('%class%', 'configureStatic'));
|
$builder->register('foo2', 'Bar\FooClass')->setConfigurator(array('%class%', 'configureStatic'));
|
||||||
$builder->setParameter('class', 'BazClass');
|
$builder->setParameter('class', 'BazClass');
|
||||||
$this->assertTrue($builder->get('foo2')->configured, '->createService() calls the configurator');
|
$this->assertTrue($builder->get('foo2')->configured, '->createService() calls the configurator');
|
||||||
|
|
||||||
$builder->register('baz', 'BazClass');
|
$builder->register('baz', 'BazClass');
|
||||||
$builder->register('foo3', 'FooClass')->setConfigurator(array(new Reference('baz'), 'configure'));
|
$builder->register('foo3', 'Bar\FooClass')->setConfigurator(array(new Reference('baz'), 'configure'));
|
||||||
$this->assertTrue($builder->get('foo3')->configured, '->createService() calls the configurator');
|
$this->assertTrue($builder->get('foo3')->configured, '->createService() calls the configurator');
|
||||||
|
|
||||||
$builder->register('foo4', 'FooClass')->setConfigurator('foo');
|
$builder->register('foo4', 'Bar\FooClass')->setConfigurator('foo');
|
||||||
try {
|
try {
|
||||||
$builder->get('foo4');
|
$builder->get('foo4');
|
||||||
$this->fail('->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
|
$this->fail('->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
|
||||||
} catch (\InvalidArgumentException $e) {
|
} catch (\InvalidArgumentException $e) {
|
||||||
$this->assertEquals('The configure callable for class "FooClass" is not a callable.', $e->getMessage(), '->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
|
$this->assertEquals('The configure callable for class "Bar\FooClass" is not a callable.', $e->getMessage(), '->createService() throws an InvalidArgumentException if the configure callable is not a valid callable');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -375,7 +375,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testCreateSyntheticService()
|
public function testCreateSyntheticService()
|
||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('foo', 'FooClass')->setSynthetic(true);
|
$builder->register('foo', 'Bar\FooClass')->setSynthetic(true);
|
||||||
$builder->get('foo');
|
$builder->get('foo');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -384,7 +384,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->setParameter('bar', 'bar');
|
$builder->setParameter('bar', 'bar');
|
||||||
$builder->register('bar', 'BarClass');
|
$builder->register('bar', 'BarClass');
|
||||||
$builder->register('foo', 'FooClass')->addArgument(array('foo' => new Expression('service("bar").foo ~ parameter("bar")')));
|
$builder->register('foo', 'Bar\FooClass')->addArgument(array('foo' => new Expression('service("bar").foo ~ parameter("bar")')));
|
||||||
$this->assertEquals('foobar', $builder->get('foo')->arguments['foo']);
|
$this->assertEquals('foobar', $builder->get('foo')->arguments['foo']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,7 +394,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testResolveServices()
|
public function testResolveServices()
|
||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder->register('foo', 'FooClass');
|
$builder->register('foo', 'Bar\FooClass');
|
||||||
$this->assertEquals($builder->get('foo'), $builder->resolveServices(new Reference('foo')), '->resolveServices() resolves service references to service instances');
|
$this->assertEquals($builder->get('foo'), $builder->resolveServices(new Reference('foo')), '->resolveServices() resolves service references to service instances');
|
||||||
$this->assertEquals(array('foo' => array('foo', $builder->get('foo'))), $builder->resolveServices(array('foo' => array('foo', new Reference('foo')))), '->resolveServices() resolves service references to service instances in nested arrays');
|
$this->assertEquals(array('foo' => array('foo', $builder->get('foo'))), $builder->resolveServices(array('foo' => array('foo', new Reference('foo')))), '->resolveServices() resolves service references to service instances in nested arrays');
|
||||||
$this->assertEquals($builder->get('foo'), $builder->resolveServices(new Expression('service("foo")')), '->resolveServices() resolves expressions');
|
$this->assertEquals($builder->get('foo'), $builder->resolveServices(new Expression('service("foo")')), '->resolveServices() resolves expressions');
|
||||||
@ -427,7 +427,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
$container->setResourceTracking(false);
|
$container->setResourceTracking(false);
|
||||||
$container->register('foo', 'FooClass');
|
$container->register('foo', 'Bar\FooClass');
|
||||||
$container->register('bar', 'BarClass');
|
$container->register('bar', 'BarClass');
|
||||||
$config = new ContainerBuilder();
|
$config = new ContainerBuilder();
|
||||||
$config->setDefinition('baz', new Definition('BazClass'));
|
$config->setDefinition('baz', new Definition('BazClass'));
|
||||||
@ -441,7 +441,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
$container->setResourceTracking(false);
|
$container->setResourceTracking(false);
|
||||||
$container->register('foo', 'FooClass');
|
$container->register('foo', 'Bar\FooClass');
|
||||||
$config->setDefinition('foo', new Definition('BazClass'));
|
$config->setDefinition('foo', new Definition('BazClass'));
|
||||||
$container->merge($config);
|
$container->merge($config);
|
||||||
$this->assertEquals('BazClass', $container->getDefinition('foo')->getClass(), '->merge() overrides already defined services');
|
$this->assertEquals('BazClass', $container->getDefinition('foo')->getClass(), '->merge() overrides already defined services');
|
||||||
@ -466,7 +466,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$builder = new ContainerBuilder();
|
$builder = new ContainerBuilder();
|
||||||
$builder
|
$builder
|
||||||
->register('foo', 'FooClass')
|
->register('foo', 'Bar\FooClass')
|
||||||
->addTag('foo', array('foo' => 'foo'))
|
->addTag('foo', array('foo' => 'foo'))
|
||||||
->addTag('bar', array('bar' => 'bar'))
|
->addTag('bar', array('bar' => 'bar'))
|
||||||
->addTag('foo', array('foofoo' => 'foofoo'))
|
->addTag('foo', array('foofoo' => 'foofoo'))
|
||||||
@ -486,7 +486,7 @@ class ContainerBuilderTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testFindDefinition()
|
public function testFindDefinition()
|
||||||
{
|
{
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
$container->setDefinition('foo', $definition = new Definition('FooClass'));
|
$container->setDefinition('foo', $definition = new Definition('Bar\FooClass'));
|
||||||
$container->setAlias('bar', 'foo');
|
$container->setAlias('bar', 'foo');
|
||||||
$container->setAlias('foobar', 'bar');
|
$container->setAlias('foobar', 'bar');
|
||||||
$this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition');
|
$this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition');
|
||||||
|
@ -10,10 +10,10 @@ use Symfony\Component\ExpressionLanguage\Expression;
|
|||||||
|
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
$container->
|
$container->
|
||||||
register('foo', 'FooClass')->
|
register('foo', 'Bar\FooClass')->
|
||||||
addTag('foo', array('foo' => 'foo'))->
|
addTag('foo', array('foo' => 'foo'))->
|
||||||
addTag('foo', array('bar' => 'bar'))->
|
addTag('foo', array('bar' => 'bar'))->
|
||||||
setFactoryClass('FooClass')->
|
setFactoryClass('Bar\\FooClass')->
|
||||||
setFactoryMethod('getInstance')->
|
setFactoryMethod('getInstance')->
|
||||||
setArguments(array('foo', new Reference('foo.baz'), array('%foo%' => 'foo is %foo%', 'foobar' => '%foo%'), true, new Reference('service_container')))->
|
setArguments(array('foo', new Reference('foo.baz'), array('%foo%' => 'foo is %foo%', 'foobar' => '%foo%'), true, new Reference('service_container')))->
|
||||||
setProperties(array('foo' => 'bar', 'moo' => new Reference('foo.baz')))->
|
setProperties(array('foo' => 'bar', 'moo' => new Reference('foo.baz')))->
|
||||||
@ -22,7 +22,7 @@ $container->
|
|||||||
setConfigurator('sc_configure')
|
setConfigurator('sc_configure')
|
||||||
;
|
;
|
||||||
$container->
|
$container->
|
||||||
register('bar', 'FooClass')->
|
register('bar', 'Bar\FooClass')->
|
||||||
setArguments(array('foo', new Reference('foo.baz'), new Parameter('foo_bar')))->
|
setArguments(array('foo', new Reference('foo.baz'), new Parameter('foo_bar')))->
|
||||||
setScope('container')->
|
setScope('container')->
|
||||||
setConfigurator(array(new Reference('foo.baz'), 'configure'))
|
setConfigurator(array(new Reference('foo.baz'), 'configure'))
|
||||||
@ -40,13 +40,13 @@ $container->
|
|||||||
$container->getParameterBag()->clear();
|
$container->getParameterBag()->clear();
|
||||||
$container->getParameterBag()->add(array(
|
$container->getParameterBag()->add(array(
|
||||||
'baz_class' => 'BazClass',
|
'baz_class' => 'BazClass',
|
||||||
'foo_class' => 'FooClass',
|
'foo_class' => 'Bar\FooClass',
|
||||||
'foo' => 'bar',
|
'foo' => 'bar',
|
||||||
));
|
));
|
||||||
$container->setAlias('alias_for_foo', 'foo');
|
$container->setAlias('alias_for_foo', 'foo');
|
||||||
$container->setAlias('alias_for_alias', 'alias_for_foo');
|
$container->setAlias('alias_for_alias', 'alias_for_foo');
|
||||||
$container->
|
$container->
|
||||||
register('method_call1', 'FooClass')->
|
register('method_call1', 'Bar\FooClass')->
|
||||||
setFile(realpath(__DIR__.'/../includes/foo.php'))->
|
setFile(realpath(__DIR__.'/../includes/foo.php'))->
|
||||||
addMethodCall('setBar', array(new Reference('foo')))->
|
addMethodCall('setBar', array(new Reference('foo')))->
|
||||||
addMethodCall('setBar', array(new Reference('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE)))->
|
addMethodCall('setBar', array(new Reference('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE)))->
|
||||||
|
@ -3,11 +3,11 @@ digraph sc {
|
|||||||
node [fontsize="11" fontname="Arial" shape="record"];
|
node [fontsize="11" fontname="Arial" shape="record"];
|
||||||
edge [fontsize="9" fontname="Arial" color="grey" arrowhead="open" arrowsize="0.5"];
|
edge [fontsize="9" fontname="Arial" color="grey" arrowhead="open" arrowsize="0.5"];
|
||||||
|
|
||||||
node_foo [label="foo (alias_for_foo)\nFooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_foo [label="foo (alias_for_foo)\nBar\\FooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_bar [label="bar\nFooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_bar [label="bar\nBar\\FooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_foo_baz [label="foo.baz\nBazClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_foo_baz [label="foo.baz\nBazClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_foo_bar [label="foo_bar\nFooClass\n", shape=record, fillcolor="#eeeeee", style="dotted"];
|
node_foo_bar [label="foo_bar\nBar\\FooClass\n", shape=record, fillcolor="#eeeeee", style="dotted"];
|
||||||
node_method_call1 [label="method_call1\nFooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_method_call1 [label="method_call1\nBar\\FooClass\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_factory_service [label="factory_service\nBar\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_factory_service [label="factory_service\nBar\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_foo_with_inline [label="foo_with_inline\nFoo\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_foo_with_inline [label="foo_with_inline\nFoo\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
node_inlined [label="inlined\nBar\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
node_inlined [label="inlined\nBar\n", shape=record, fillcolor="#eeeeee", style="filled"];
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
namespace Bar;
|
||||||
|
|
||||||
class FooClass
|
class FooClass
|
||||||
{
|
{
|
||||||
public $foo, $moo;
|
public $foo, $moo;
|
||||||
|
@ -49,13 +49,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getBarService()
|
protected function getBarService()
|
||||||
{
|
{
|
||||||
$a = $this->get('foo.baz');
|
$a = $this->get('foo.baz');
|
||||||
|
|
||||||
$this->services['bar'] = $instance = new \FooClass('foo', $a, $this->getParameter('foo_bar'));
|
$this->services['bar'] = $instance = new \Bar\FooClass('foo', $a, $this->getParameter('foo_bar'));
|
||||||
|
|
||||||
$a->configure($instance);
|
$a->configure($instance);
|
||||||
|
|
||||||
@ -132,13 +132,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getFooService()
|
protected function getFooService()
|
||||||
{
|
{
|
||||||
$a = $this->get('foo.baz');
|
$a = $this->get('foo.baz');
|
||||||
|
|
||||||
$this->services['foo'] = $instance = \FooClass::getInstance('foo', $a, array($this->getParameter('foo') => 'foo is '.$this->getParameter('foo').'', 'foobar' => $this->getParameter('foo')), true, $this);
|
$this->services['foo'] = $instance = \Bar\FooClass::getInstance('foo', $a, array($this->getParameter('foo') => 'foo is '.$this->getParameter('foo').'', 'foobar' => $this->getParameter('foo')), true, $this);
|
||||||
|
|
||||||
$instance->setBar($this->get('bar'));
|
$instance->setBar($this->get('bar'));
|
||||||
$instance->initialize();
|
$instance->initialize();
|
||||||
@ -201,13 +201,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getMethodCall1Service()
|
protected function getMethodCall1Service()
|
||||||
{
|
{
|
||||||
require_once '%path%foo.php';
|
require_once '%path%foo.php';
|
||||||
|
|
||||||
$this->services['method_call1'] = $instance = new \FooClass();
|
$this->services['method_call1'] = $instance = new \Bar\FooClass();
|
||||||
|
|
||||||
$instance->setBar($this->get('foo'));
|
$instance->setBar($this->get('foo'));
|
||||||
$instance->setBar($this->get('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE));
|
$instance->setBar($this->get('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE));
|
||||||
@ -297,7 +297,7 @@ class ProjectServiceContainer extends Container
|
|||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'baz_class' => 'BazClass',
|
'baz_class' => 'BazClass',
|
||||||
'foo_class' => 'FooClass',
|
'foo_class' => 'Bar\\FooClass',
|
||||||
'foo' => 'bar',
|
'foo' => 'bar',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -58,13 +58,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getBarService()
|
protected function getBarService()
|
||||||
{
|
{
|
||||||
$a = $this->get('foo.baz');
|
$a = $this->get('foo.baz');
|
||||||
|
|
||||||
$this->services['bar'] = $instance = new \FooClass('foo', $a, $this->getParameter('foo_bar'));
|
$this->services['bar'] = $instance = new \Bar\FooClass('foo', $a, $this->getParameter('foo_bar'));
|
||||||
|
|
||||||
$a->configure($instance);
|
$a->configure($instance);
|
||||||
|
|
||||||
@ -144,13 +144,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getFooService()
|
protected function getFooService()
|
||||||
{
|
{
|
||||||
$a = $this->get('foo.baz');
|
$a = $this->get('foo.baz');
|
||||||
|
|
||||||
$this->services['foo'] = $instance = \FooClass::getInstance('foo', $a, array('bar' => 'foo is bar', 'foobar' => 'bar'), true, $this);
|
$this->services['foo'] = $instance = \Bar\FooClass::getInstance('foo', $a, array('bar' => 'foo is bar', 'foobar' => 'bar'), true, $this);
|
||||||
|
|
||||||
$instance->setBar($this->get('bar'));
|
$instance->setBar($this->get('bar'));
|
||||||
$instance->initialize();
|
$instance->initialize();
|
||||||
@ -181,11 +181,11 @@ class ProjectServiceContainer extends Container
|
|||||||
/**
|
/**
|
||||||
* Gets the 'foo_bar' service.
|
* Gets the 'foo_bar' service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getFooBarService()
|
protected function getFooBarService()
|
||||||
{
|
{
|
||||||
return new \FooClass();
|
return new \Bar\FooClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -216,13 +216,13 @@ class ProjectServiceContainer extends Container
|
|||||||
* This service is shared.
|
* This service is shared.
|
||||||
* This method always returns the same instance of the service.
|
* This method always returns the same instance of the service.
|
||||||
*
|
*
|
||||||
* @return FooClass A FooClass instance.
|
* @return Bar\FooClass A Bar\FooClass instance.
|
||||||
*/
|
*/
|
||||||
protected function getMethodCall1Service()
|
protected function getMethodCall1Service()
|
||||||
{
|
{
|
||||||
require_once '%path%foo.php';
|
require_once '%path%foo.php';
|
||||||
|
|
||||||
$this->services['method_call1'] = $instance = new \FooClass();
|
$this->services['method_call1'] = $instance = new \Bar\FooClass();
|
||||||
|
|
||||||
$instance->setBar($this->get('foo'));
|
$instance->setBar($this->get('foo'));
|
||||||
$instance->setBar(NULL);
|
$instance->setBar(NULL);
|
||||||
@ -306,7 +306,7 @@ class ProjectServiceContainer extends Container
|
|||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'baz_class' => 'BazClass',
|
'baz_class' => 'BazClass',
|
||||||
'foo_class' => 'FooClass',
|
'foo_class' => 'Bar\\FooClass',
|
||||||
'foo' => 'bar',
|
'foo' => 'bar',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||||
<parameters>
|
<parameters>
|
||||||
<parameter key="baz_class">BazClass</parameter>
|
<parameter key="baz_class">BazClass</parameter>
|
||||||
<parameter key="foo_class">FooClass</parameter>
|
<parameter key="foo_class">Bar\FooClass</parameter>
|
||||||
<parameter key="foo">bar</parameter>
|
<parameter key="foo">bar</parameter>
|
||||||
</parameters>
|
</parameters>
|
||||||
<services>
|
<services>
|
||||||
<service id="foo" class="FooClass" factory-method="getInstance">
|
<service id="foo" class="Bar\FooClass" factory-method="getInstance">
|
||||||
<tag name="foo" foo="foo"/>
|
<tag name="foo" foo="foo"/>
|
||||||
<tag name="foo" bar="bar"/>
|
<tag name="foo" bar="bar"/>
|
||||||
<argument>foo</argument>
|
<argument>foo</argument>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<call method="initialize"/>
|
<call method="initialize"/>
|
||||||
<configurator function="sc_configure"/>
|
<configurator function="sc_configure"/>
|
||||||
</service>
|
</service>
|
||||||
<service id="bar" class="FooClass">
|
<service id="bar" class="Bar\FooClass">
|
||||||
<argument>foo</argument>
|
<argument>foo</argument>
|
||||||
<argument type="service" id="foo.baz"/>
|
<argument type="service" id="foo.baz"/>
|
||||||
<argument>%foo_bar%</argument>
|
<argument>%foo_bar%</argument>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
<configurator class="%baz_class%" method="configureStatic1"/>
|
<configurator class="%baz_class%" method="configureStatic1"/>
|
||||||
</service>
|
</service>
|
||||||
<service id="foo_bar" class="%foo_class%" scope="prototype"/>
|
<service id="foo_bar" class="%foo_class%" scope="prototype"/>
|
||||||
<service id="method_call1" class="FooClass">
|
<service id="method_call1" class="Bar\FooClass">
|
||||||
<file>%path%foo.php</file>
|
<file>%path%foo.php</file>
|
||||||
<call method="setBar">
|
<call method="setBar">
|
||||||
<argument type="service" id="foo"/>
|
<argument type="service" id="foo"/>
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
parameters:
|
parameters:
|
||||||
baz_class: BazClass
|
baz_class: BazClass
|
||||||
foo_class: FooClass
|
foo_class: Bar\FooClass
|
||||||
foo: bar
|
foo: bar
|
||||||
|
|
||||||
services:
|
services:
|
||||||
foo:
|
foo:
|
||||||
class: FooClass
|
class: Bar\FooClass
|
||||||
tags:
|
tags:
|
||||||
- { name: foo, foo: foo }
|
- { name: foo, foo: foo }
|
||||||
- { name: foo, bar: bar }
|
- { name: foo, bar: bar }
|
||||||
factory_class: FooClass
|
factory_class: Bar\FooClass
|
||||||
factory_method: getInstance
|
factory_method: getInstance
|
||||||
arguments: [foo, '@foo.baz', { '%foo%': 'foo is %foo%', foobar: '%foo%' }, true, '@service_container']
|
arguments: [foo, '@foo.baz', { '%foo%': 'foo is %foo%', foobar: '%foo%' }, true, '@service_container']
|
||||||
properties: { foo: bar, moo: '@foo.baz' }
|
properties: { foo: bar, moo: '@foo.baz' }
|
||||||
@ -19,7 +19,7 @@ services:
|
|||||||
|
|
||||||
configurator: sc_configure
|
configurator: sc_configure
|
||||||
bar:
|
bar:
|
||||||
class: FooClass
|
class: Bar\FooClass
|
||||||
arguments: [foo, '@foo.baz', '%foo_bar%']
|
arguments: [foo, '@foo.baz', '%foo_bar%']
|
||||||
configurator: ['@foo.baz', configure]
|
configurator: ['@foo.baz', configure]
|
||||||
foo.baz:
|
foo.baz:
|
||||||
@ -31,7 +31,7 @@ services:
|
|||||||
class: %foo_class%
|
class: %foo_class%
|
||||||
scope: prototype
|
scope: prototype
|
||||||
method_call1:
|
method_call1:
|
||||||
class: FooClass
|
class: Bar\FooClass
|
||||||
file: %path%foo.php
|
file: %path%foo.php
|
||||||
calls:
|
calls:
|
||||||
- [setBar, ['@foo']]
|
- [setBar, ['@foo']]
|
||||||
|
Reference in New Issue
Block a user