*/ public function getWorkers(): array { $workers = []; foreach ($this->personIdentifierDefinitionRepository->findByActive() as $definition) { try { $worker = $this->getEngine($definition->getEngine()); } catch (EngineNotFoundException) { continue; } $workers[] = new PersonIdentifierWorker($worker, $definition); } return $workers; } public function buildWorkerByPersonIdentifierDefinition(PersonIdentifierDefinition $personIdentifierDefinition): PersonIdentifierWorker { return new PersonIdentifierWorker($this->getEngine($personIdentifierDefinition->getEngine()), $personIdentifierDefinition); } /** * @throw EngineNotFoundException */ private function getEngine(string $name): PersonIdentifierEngineInterface { foreach ($this->engines as $engine) { if ($engine->getName() === $name) { return $engine; } } throw new EngineNotFoundException($name); } }