| @@ 20-65 (lines=46) @@ | ||
| 17 | use Symfony\Component\DependencyInjection\ContainerAwareTrait; |
|
| 18 | use Symfony\Component\DependencyInjection\ContainerInterface; |
|
| 19 | ||
| 20 | class SymfonyContainerCommandHandlerLocator implements CommandHandlerLocator, ContainerAwareInterface |
|
| 21 | { |
|
| 22 | use ContainerAwareTrait; |
|
| 23 | ||
| 24 | /** |
|
| 25 | * @var string[] |
|
| 26 | */ |
|
| 27 | private $command_handler_ids = []; |
|
| 28 | ||
| 29 | /** |
|
| 30 | * @param Command $command |
|
| 31 | * |
|
| 32 | * @return CommandHandler|null |
|
| 33 | */ |
|
| 34 | public function getCommandHandler(Command $command) |
|
| 35 | { |
|
| 36 | return $this->lazyLoad(get_class($command)); |
|
| 37 | } |
|
| 38 | ||
| 39 | /** |
|
| 40 | * @param string $command_name |
|
| 41 | * @param string $service |
|
| 42 | */ |
|
| 43 | public function registerService($command_name, $service) |
|
| 44 | { |
|
| 45 | $this->command_handler_ids[$command_name] = $service; |
|
| 46 | } |
|
| 47 | ||
| 48 | /** |
|
| 49 | * @param $command_name |
|
| 50 | * |
|
| 51 | * @return CommandHandler |
|
| 52 | */ |
|
| 53 | private function lazyLoad($command_name) |
|
| 54 | { |
|
| 55 | if ($this->container instanceof ContainerInterface && isset($this->command_handler_ids[$command_name])) { |
|
| 56 | $handler = $this->container->get($this->command_handler_ids[$command_name]); |
|
| 57 | ||
| 58 | if ($handler instanceof CommandHandler) { |
|
| 59 | return $handler; |
|
| 60 | } |
|
| 61 | } |
|
| 62 | ||
| 63 | return null; |
|
| 64 | } |
|
| 65 | } |
|
| 66 | ||
| @@ 19-64 (lines=46) @@ | ||
| 16 | use Symfony\Component\DependencyInjection\ContainerAwareTrait; |
|
| 17 | use Symfony\Component\DependencyInjection\ContainerInterface; |
|
| 18 | ||
| 19 | class SymfonyContainerQueryHandlerLocator implements QueryHandlerLocator, ContainerAwareInterface |
|
| 20 | { |
|
| 21 | use ContainerAwareTrait; |
|
| 22 | ||
| 23 | /** |
|
| 24 | * @var string[] |
|
| 25 | */ |
|
| 26 | private $query_handler_ids = []; |
|
| 27 | ||
| 28 | /** |
|
| 29 | * @param Query $query |
|
| 30 | * |
|
| 31 | * @return QueryHandler|null |
|
| 32 | */ |
|
| 33 | public function getQueryHandler(Query $query) |
|
| 34 | { |
|
| 35 | return $this->lazyLoad(get_class($query)); |
|
| 36 | } |
|
| 37 | ||
| 38 | /** |
|
| 39 | * @param string $query_name |
|
| 40 | * @param string $service |
|
| 41 | */ |
|
| 42 | public function registerService($query_name, $service) |
|
| 43 | { |
|
| 44 | $this->query_handler_ids[$query_name] = $service; |
|
| 45 | } |
|
| 46 | ||
| 47 | /** |
|
| 48 | * @param $query_name |
|
| 49 | * |
|
| 50 | * @return QueryHandler |
|
| 51 | */ |
|
| 52 | private function lazyLoad($query_name) |
|
| 53 | { |
|
| 54 | if ($this->container instanceof ContainerInterface && isset($this->query_handler_ids[$query_name])) { |
|
| 55 | $handler = $this->container->get($this->query_handler_ids[$query_name]); |
|
| 56 | ||
| 57 | if ($handler instanceof QueryHandler) { |
|
| 58 | return $handler; |
|
| 59 | } |
|
| 60 | } |
|
| 61 | ||
| 62 | return null; |
|
| 63 | } |
|
| 64 | } |
|
| 65 | ||