pastebin

Paste Search Dynamic
Recent pastes
ContainerBuilder getByClass
  1. <?php
  2.  
  3. /**
  4.  * Test: NetteDIContainerBuilder and Container: getByClass()
  5.  *
  6.  * @author     David Grudl
  7.  * @package    NetteDI
  8.  * @subpackage UnitTests
  9.  */
  10.  
  11. use NetteDI;
  12.  
  13.  
  14.  
  15. require __DIR__ . '/../bootstrap.php';
  16.  
  17.  
  18.  
  19. class Service extends NetteObject
  20. {
  21. }
  22.  
  23.  
  24.  
  25. $builder = new DIContainerBuilder;
  26. $builder->addDefinition('one')
  27.         ->setClass('Service');
  28. $builder->addDefinition('two')
  29.         ->setClass('NetteObject');
  30.  
  31.  
  32. // compile-time
  33. $builder->prepareClassList();
  34.  
  35. assert::same( 'one', $builder->getByClass('service') );
  36. assert::same( null, $builder->getByClass('unknown') );
  37. assert::throws(function() use ($builder) {
  38.         $builder->getByClass('NetteObject');
  39. }, 'NetteDIServiceCreationException', 'Multiple preferred services of type NetteObject found: one, two, container');
  40.  
  41.  
  42. // run-time
  43. $code = (string) $builder->generateClass();
  44. file_put_contents(TEMP_DIR . '/code.php', "<?phpn$code");
  45. require TEMP_DIR . '/code.php';
  46.  
  47. $container = new Container;
  48.  
  49. assert::true( $container->getByClass('service') instanceof Service );
  50. assert::same( null, $container->getByClass('unknown', false) );
  51.  
  52. assert::throws(function() use ($container) {
  53.         $container->getByClass('unknown');
  54. }, 'NetteDIMissingServiceException', 'Service of type unknown not found.');
  55.  
  56. assert::throws(function() use ($container) {
  57.         $container->getByClass('NetteObject');
  58. }, 'NetteDIMissingServiceException', 'Multiple services of type NetteObject found.');
Parsed in 0.075 seconds