handlers as $handler) { if ($handler->supports($entityWorkflow, $options)) { return $handler; } } throw new HandlerNotFoundException(); } public function getSupportedWorkflows(EntityWorkflow $entityWorkflow): array { return $this->registry->all($entityWorkflow); } public function getAssociatedStoredObject(EntityWorkflow $entityWorkflow): ?StoredObject { foreach ($this->handlers as $handler) { if ($handler instanceof EntityWorkflowWithStoredObjectHandlerInterface && $handler->supports($entityWorkflow)) { return $handler->getAssociatedStoredObject($entityWorkflow); } } return null; } /** * @return list */ public function findByRelatedEntity(object $object): array { foreach ($this->handlers as $handler) { if ([] !== $workflows = $handler->findByRelatedEntity($object)) { return $workflows; } } return []; } }