vendor/league/tactician-bundle/src/DependencyInjection/Compiler/BusBuilder/BusBuilders.php line 11

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace League\Tactician\Bundle\DependencyInjection\Compiler\BusBuilder;
  4. use League\Tactician\Bundle\DependencyInjection\DuplicatedCommandBusId;
  5. use League\Tactician\Bundle\DependencyInjection\HandlerMapping\Routing;
  6. use League\Tactician\Bundle\DependencyInjection\InvalidCommandBusId;
  7. use ArrayIterator;
  8. final class BusBuilders implements \IteratorAggregate
  9. {
  10.     /**
  11.      * @var BusBuilder[]
  12.      */
  13.     private $busBuilders = [];
  14.     /**
  15.      * @var string
  16.      */
  17.     private $defaultBusId;
  18.     public function __construct(array $busBuildersstring $defaultBusId)
  19.     {
  20.         foreach ($busBuilders as $builder) {
  21.             $this->add($builder);
  22.         }
  23.         $this->assertValidBusId($defaultBusId);
  24.         $this->defaultBusId $defaultBusId;
  25.     }
  26.     public function createBlankRouting(): Routing
  27.     {
  28.         return new Routing(array_keys($this->busBuilders));
  29.     }
  30.     public function defaultBus(): BusBuilder
  31.     {
  32.         return $this->get($this->defaultBusId);
  33.     }
  34.     private function get(string $busId): BusBuilder
  35.     {
  36.         $this->assertValidBusId($busId);
  37.         return $this->busBuilders[$busId];
  38.     }
  39.     /**
  40.      * @return ArrayIterator|BusBuilder[]
  41.      */
  42.     public function getIterator()
  43.     {
  44.         return new ArrayIterator($this->busBuilders);
  45.     }
  46.     private function assertValidBusId($busId)
  47.     {
  48.         if (!isset($this->busBuilders[$busId])) {
  49.             throw InvalidCommandBusId::ofName($busIdarray_keys($this->busBuilders));
  50.         }
  51.     }
  52.     private function add(BusBuilder $builder)
  53.     {
  54.         $id $builder->id();
  55.         if (isset($this->busBuilders[$id])) {
  56.             throw DuplicatedCommandBusId::withId($id);
  57.         }
  58.         $this->busBuilders[$id] = $builder;
  59.     }
  60. }