InTransaction()) // - если находится, то выбрасываем исключение. throw new PDOException("Транзакция уже начата! / Transaction already started!"); // Начинаем транзакцию $isSuccess = $this->DataBaseHandle->beginTransaction(); // Если транзакция не началась if (!$isSuccess) // - то выбрасываем исключение. throw new PDOException("Ошибка при начале транзакции! / Transaction start error!"); } /** * Проверяет, находится ли текущая транзакция в процессе. * * @return bool Результат проверки: true - в процессе, false - нет. */ public function InTransaction (): bool { return $this->DataBaseHandle->inTransaction(); } /** * Отправляет транзакцию в базу данных. * * @return void * @throws PDOException Если транзакция не начата или не отправлена. */ public function Commit (): void { // Проверка, не находится ли текущая транзакция в процессе if (!$this->InTransaction()) // - если нет, то выбрасываем исключение. throw new PDOException("Транзакция не начата! / Transaction not started!"); // Отправляем транзакцию в базу данных $isSuccess = $this->DataBaseHandle->commit(); // Если транзакция не отправлена if (!$isSuccess) // - то выбрасываем исключение. throw new PDOException("Ошибка при отправке транзакции в базу данных! / Transaction send error!"); } /** * Откатывает транзакцию. * * @return void * @throws PDOException Если транзакция не начата или не откатана. */ public function RollBack (): void { // Проверка, не находится ли текущая транзакция в процессе if (!$this->InTransaction()) // - если нет, то выбрасываем исключение. throw new PDOException("Транзакция не начата! / Transaction not started!"); // Откатываем транзакцию $isSuccess = $this->DataBaseHandle->rollBack(); // Если транзакция не откатана if (!$isSuccess) // - то выбрасываем исключение. throw new PDOException("Ошибка при откате транзакции! / Transaction rollback error!"); } }