container9.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. require_once __DIR__.'/../includes/classes.php';
  3. use Symfony\Component\DependencyInjection\ContainerInterface;
  4. use Symfony\Component\DependencyInjection\ContainerBuilder;
  5. use Symfony\Component\DependencyInjection\Reference;
  6. use Symfony\Component\DependencyInjection\Parameter;
  7. use Symfony\Component\ExpressionLanguage\Expression;
  8. $container = new ContainerBuilder();
  9. $container
  10. ->register('foo', '\Bar\FooClass')
  11. ->addTag('foo', array('foo' => 'foo'))
  12. ->addTag('foo', array('bar' => 'bar', 'baz' => 'baz'))
  13. ->setFactory(array('Bar\\FooClass', 'getInstance'))
  14. ->setArguments(array('foo', new Reference('foo.baz'), array('%foo%' => 'foo is %foo%', 'foobar' => '%foo%'), true, new Reference('service_container')))
  15. ->setProperties(array('foo' => 'bar', 'moo' => new Reference('foo.baz'), 'qux' => array('%foo%' => 'foo is %foo%', 'foobar' => '%foo%')))
  16. ->addMethodCall('setBar', array(new Reference('bar')))
  17. ->addMethodCall('initialize')
  18. ->setConfigurator('sc_configure')
  19. ;
  20. $container
  21. ->register('foo.baz', '%baz_class%')
  22. ->setFactory(array('%baz_class%', 'getInstance'))
  23. ->setConfigurator(array('%baz_class%', 'configureStatic1'))
  24. ;
  25. $container
  26. ->register('bar', 'Bar\FooClass')
  27. ->setArguments(array('foo', new Reference('foo.baz'), new Parameter('foo_bar')))
  28. ->setConfigurator(array(new Reference('foo.baz'), 'configure'))
  29. ;
  30. $container
  31. ->register('foo_bar', '%foo_class%')
  32. ->setShared(false)
  33. ;
  34. $container->getParameterBag()->clear();
  35. $container->getParameterBag()->add(array(
  36. 'baz_class' => 'BazClass',
  37. 'foo_class' => 'Bar\FooClass',
  38. 'foo' => 'bar',
  39. ));
  40. $container->setAlias('alias_for_foo', 'foo');
  41. $container->setAlias('alias_for_alias', 'alias_for_foo');
  42. $container
  43. ->register('method_call1', 'Bar\FooClass')
  44. ->setFile(realpath(__DIR__.'/../includes/foo.php'))
  45. ->addMethodCall('setBar', array(new Reference('foo')))
  46. ->addMethodCall('setBar', array(new Reference('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE)))
  47. ->addMethodCall('setBar', array(new Reference('foo3', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)))
  48. ->addMethodCall('setBar', array(new Reference('foobaz', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)))
  49. ->addMethodCall('setBar', array(new Expression('service("foo").foo() ~ (container.hasParameter("foo") ? parameter("foo") : "default")')))
  50. ;
  51. $container
  52. ->register('foo_with_inline', 'Foo')
  53. ->addMethodCall('setBar', array(new Reference('inlined')))
  54. ;
  55. $container
  56. ->register('inlined', 'Bar')
  57. ->setProperty('pub', 'pub')
  58. ->addMethodCall('setBaz', array(new Reference('baz')))
  59. ->setPublic(false)
  60. ;
  61. $container
  62. ->register('baz', 'Baz')
  63. ->addMethodCall('setFoo', array(new Reference('foo_with_inline')))
  64. ;
  65. $container
  66. ->register('request', 'Request')
  67. ->setSynthetic(true)
  68. ;
  69. $container
  70. ->register('configurator_service', 'ConfClass')
  71. ->setPublic(false)
  72. ->addMethodCall('setFoo', array(new Reference('baz')))
  73. ;
  74. $container
  75. ->register('configured_service', 'stdClass')
  76. ->setConfigurator(array(new Reference('configurator_service'), 'configureStdClass'))
  77. ;
  78. $container
  79. ->register('decorated', 'stdClass')
  80. ;
  81. $container
  82. ->register('decorator_service', 'stdClass')
  83. ->setDecoratedService('decorated')
  84. ;
  85. $container
  86. ->register('decorator_service_with_name', 'stdClass')
  87. ->setDecoratedService('decorated', 'decorated.pif-pouf')
  88. ;
  89. $container
  90. ->register('deprecated_service', 'stdClass')
  91. ->setDeprecated(true)
  92. ;
  93. $container
  94. ->register('new_factory', 'FactoryClass')
  95. ->setProperty('foo', 'bar')
  96. ->setPublic(false)
  97. ;
  98. $container
  99. ->register('factory_service', 'Bar')
  100. ->setFactory(array(new Reference('foo.baz'), 'getInstance'))
  101. ;
  102. $container
  103. ->register('new_factory_service', 'FooBarBaz')
  104. ->setProperty('foo', 'bar')
  105. ->setFactory(array(new Reference('new_factory'), 'getInstance'))
  106. ;
  107. $container
  108. ->register('service_from_static_method', 'Bar\FooClass')
  109. ->setFactory(array('Bar\FooClass', 'getInstance'))
  110. ;
  111. return $container;