container_uninitialized_ref.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
  3. use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
  4. use Symfony\Component\DependencyInjection\ContainerBuilder;
  5. use Symfony\Component\DependencyInjection\Reference;
  6. $container = new ContainerBuilder();
  7. $container
  8. ->register('foo1', 'stdClass')
  9. ->setPublic(true)
  10. ;
  11. $container
  12. ->register('foo2', 'stdClass')
  13. ->setPublic(false)
  14. ;
  15. $container
  16. ->register('foo3', 'stdClass')
  17. ->setPublic(false)
  18. ;
  19. $container
  20. ->register('baz', 'stdClass')
  21. ->setProperty('foo3', new Reference('foo3'))
  22. ->setPublic(true)
  23. ;
  24. $container
  25. ->register('bar', 'stdClass')
  26. ->setProperty('foo1', new Reference('foo1', $container::IGNORE_ON_UNINITIALIZED_REFERENCE))
  27. ->setProperty('foo2', new Reference('foo2', $container::IGNORE_ON_UNINITIALIZED_REFERENCE))
  28. ->setProperty('foo3', new Reference('foo3', $container::IGNORE_ON_UNINITIALIZED_REFERENCE))
  29. ->setProperty('closures', array(
  30. new ServiceClosureArgument(new Reference('foo1', $container::IGNORE_ON_UNINITIALIZED_REFERENCE)),
  31. new ServiceClosureArgument(new Reference('foo2', $container::IGNORE_ON_UNINITIALIZED_REFERENCE)),
  32. new ServiceClosureArgument(new Reference('foo3', $container::IGNORE_ON_UNINITIALIZED_REFERENCE)),
  33. ))
  34. ->setProperty('iter', new IteratorArgument(array(
  35. 'foo1' => new Reference('foo1', $container::IGNORE_ON_UNINITIALIZED_REFERENCE),
  36. 'foo2' => new Reference('foo2', $container::IGNORE_ON_UNINITIALIZED_REFERENCE),
  37. 'foo3' => new Reference('foo3', $container::IGNORE_ON_UNINITIALIZED_REFERENCE),
  38. )))
  39. ->setPublic(true)
  40. ;
  41. return $container;