Класс формы регистрации онлайн урок.


Создадим класс, который моделирует нашу форму. Назовем его RegistrationForm, а файл - registration.form.class.php. Сам файл мы разместим в папке forms. Этот класс будет содержать свойства, который совпадают с названиями полей самой формы. Также там будут геттеры и сеттеры для этих свойств, конструктор и методы для валидации формы.

class RegistrationForm
{
private $email;
private $username;
private $password;
private $passwordConfirm;
}


Конструктор будет зависеть от массива, в котором расположены необходимые значение. Мы в дальнейшем будем в качестве аргумента подставлять туда $_POST

function __construct(Array $data)
{
$this->email = isset($data['email']) ? $data['email'] : null;
$this->username = isset($data['username']) ? $data['username'] : null;
$this->password = isset($data['password']) ? $data['password'] : null;
$this->passwordConfirm = isset($data['passwordConfirm']) ? $data['passwordConfirm'] : null;
}


Теперь напишем методы для валидации. Правила простые - поля должны быть заполнены, а пароли совпадать. При необходимости эти требования можно усилить.

public function passwordsMatch()
{
return $this->password == $this->passwordConfirm;
}

public function validate()
{
return !empty($this->email) && !empty($this->username) && !empty($this->password) && !empty($this->passwordConfirm) && $this->passwordsMatch();
}


Теперь отредактируем файл register.php. Создадим там экземпляр этого класса и запустим валидацию.

require_once('forms/registration.form.class.php');

$msg = '';
$form = new RegistrationForm($_POST);

if ($_POST) {
if ($form->validate()) {
echo 'ok';
// to be continued
} else {
$msg = $form->passwordsMatch() ? 'Please fill in fields' : 'Passwords don\'t match';
}
}


Также при помощи класса формы, мы подставим в разметку значения полей, если валидация не пройдет.

<form method="post">
Email: <input type="email" name="email" value="<?=$form->getEmail(); ?>"/> <br/><br/>
Username: <input type="text" name="username" value="<?=$form->getUsername(); ?>"/> <br/><br/>
Password: <input type="password" name="password"/> <br/><br/>
Confirm password: <input type="password" name="passwordConfirm"/> <br/><br/>
<input type="submit"/>
</form>


Дополнительно, мы ввели переменную $msg для отображения сообщений о неправильно заполненной форме. Это сообщение будет говорить либо о том, что не все поля заполнены, либо о том, что пароли не совпали. При этом мы используем класс формы.

В следующем уроке мы создадим таблицу с пользователями и закончим скрипт для регистрации.