PHP: Как я могу получить свои исключения из моего файла функций в мой файл класса и затем передать его моему клиенту? - PullRequest
1 голос
/ 07 мая 2019

Для школьного проекта нам нужно создать php-проект, содержащий регистрационную форму, написанную на PHP на ООП. Но я застрял с обработкой ошибок моей формы.

Следующие работы:

  1. Я сделал форму в моем файле register.php
  2. Я отправляю данные на мой Файл user.class.php
  3. Проверяет форму в моей функции .inc.php файл благодаря моей canRegister() функции

Это отлично работает; если форма не заполнена правильно, она не добавит данные в мою базу данных. Проблема, с которой я столкнулся, связана с исключениями в моем интерфейсе (register.php).

Таким образом, Исключение в настоящее время перехвачено в моем User.class.php, но я не знаю, как я могу «перенести» эти данные из моего класса в мой файл register.php, так как данные снова находятся в ситуации try catch .

Файл Functions.inc.php:

{
    if ($item1 != $item2) {
        throw new Exception('Passwords are not matching');

        return false;
    }

    return true;
}

function canRegister($email, $password1, $password2)
{
    try {
        isEqual($password1, $password2);
    } catch (Exception $e) {
        return $e;
    }
}

Файл User.class.php:

public function register()
        {
            $password = Security::hash($this->password);
            if (canRegister($this->email, $this->password, $this->passwordConfirmation)) {
                try {
                    $conn = Db::getInstance();
                    $statement = $conn->prepare('INSERT INTO user(firstName, lastName, userName, email, password) values (:firstName, :lastName, :userName, :email, :password)');
                    $statement->bindParam(':firstName', $this->firstName);
                    $statement->bindParam(':lastName', $this->lastName);
                    $statement->bindParam(':userName', $this->userName);
                    $statement->bindParam(':email', $this->email);
                    $statement->bindParam(':password', $password);
                    $result = $statement->execute();

                    return $result;
                } catch (Exception $e) {
                    return false;
                }
            } else {
            }
        }

файл register.php:

if (!empty($_POST)) {
    $user = new User();

    $user->setFirstName($_POST['firstName']);
    $user->setLastName($_POST['lastName']);
    $user->setUserName($_POST['userName']);
    $user->setEmail($_POST['email']);
    $user->setPassword($_POST['password']);
    $user->setPasswordConfirmation($_POST['passwordConfirmation']);

    if ($user->register()) {
        $_SESSION['user'] = $user->getEmail();
    //header('location: index.php');
    } else {
        $result = $e->getMessage();
    }
}

Я ожидаю получить результат в моей переменной $ result, чтобы я мог передать ее моему внешнему интерфейсу.

Заранее спасибо, Wannes

...