container9.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. require_once __DIR__.'/../includes/classes.php';
  3. use Symfony\Components\DependencyInjection\Container;
  4. use Symfony\Components\DependencyInjection\Builder;
  5. use Symfony\Components\DependencyInjection\Reference;
  6. use Symfony\Components\DependencyInjection\Parameter;
  7. $container = new Builder();
  8. $container->
  9. register('foo', 'FooClass')->
  10. setConstructor('getInstance')->
  11. setArguments(array('foo', new Reference('foo.baz'), array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, new Reference('service_container')))->
  12. setFile(realpath(__DIR__.'/../includes/foo.php'))->
  13. setShared(false)->
  14. addMethodCall('setBar', array('bar'))->
  15. addMethodCall('initialize')->
  16. setConfigurator('sc_configure')
  17. ;
  18. $container->
  19. register('bar', 'FooClass')->
  20. setArguments(array('foo', new Reference('foo.baz'), new Parameter('foo_bar')))->
  21. setShared(true)->
  22. setConfigurator(array(new Reference('foo.baz'), 'configure'))
  23. ;
  24. $container->
  25. register('foo.baz', '%baz_class%')->
  26. setConstructor('getInstance')->
  27. setConfigurator(array('%baz_class%', 'configureStatic1'))
  28. ;
  29. $container->register('foo_bar', '%foo_class%');
  30. $container->setParameters(array(
  31. 'baz_class' => 'BazClass',
  32. 'foo_class' => 'FooClass',
  33. 'foo' => 'bar',
  34. 'foo_bar' => new Reference('foo_bar'),
  35. ));
  36. $container->setAlias('alias_for_foo', 'foo');
  37. $container->
  38. register('method_call1', 'FooClass')->
  39. addMethodCall('setBar', array(new Reference('foo')))->
  40. addMethodCall('setBar', array(new Reference('foo', Container::NULL_ON_INVALID_REFERENCE)))->
  41. addMethodCall('setBar', array(new Reference('foo', Container::IGNORE_ON_INVALID_REFERENCE)))->
  42. addMethodCall('setBar', array(new Reference('foobaz', Container::IGNORE_ON_INVALID_REFERENCE)))
  43. ;
  44. return $container;