/** * Registers a responder * * @param string $actionClass The full action class name * @param string $serviceId The responder service ID * * @return void * * @throws LogicException When the action class is not valid */ public function registerResponder($actionClass, $serviceId) { if (!Test::isSubclassOf($actionClass, Action::class)) { $message = sprintf('Invalid action class: %s', $actionClass); throw new LogicException($message); } $type = Type::create($actionClass)->toString(); $this->responders[$type] = (string) $serviceId; }