container9.php 5.1 KB

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