'ConfirmationRedirect', ConfirmationType::QR => 'ConfirmationQr' ]; /** * Фабричный метод создания объекта сценария подтверждения привязки по типу. * * @param string|null $type Код сценария подтверждения * * @return AbstractConfirmation */ public function factory(?string $type): AbstractConfirmation { if (!is_string($type)) { throw new InvalidArgumentException('Invalid confirmation type value in save payment method confirmation factory'); } if (!array_key_exists($type, $this->typeClassMap)) { throw new InvalidArgumentException('Invalid confirmation data type "' . $type . '"'); } $className = __NAMESPACE__ . '\\' . $this->typeClassMap[$type]; return new $className(); } /** * Фабричный метод создания объекта сценария подтверждения привязки из массива. * * @param array $data Массив данных сценария подтверждения привязки * @param null|string $type Тип сценария подтверждения привязки */ public function factoryFromArray(array $data, ?string $type = null): AbstractConfirmation { if (null === $type) { if (array_key_exists('type', $data)) { $type = $data['type']; unset($data['type']); } else { throw new InvalidArgumentException( 'Parameter type not specified in ConfirmationFactory.factoryFromArray()' ); } } $confirmationData = $this->factory($type); $confirmationData->fromArray($data); return $confirmationData; } }