Я создаю веб-приложение, используя объектно-ориентированное PHP, и мне интересно, как лучше всего обрабатывать такие ошибки, как «слишком короткое имя пользователя», «неправильный пароль» и т. Д. c.
Я пробовал это:
// login.php
<?php
include_once 'classes/ErrorHandler.class.php';
include_once 'classes/DataValidator.class.php';
include_once 'classes/User.class.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$dataValidator = new DataValidator($_POST['username']);
$dataValidator->length(3, 16);
$dataValidator = new DataValidator($_POST['password']);
$dataValidator->length(8);
// ???
}
// HTML FORM...
------
// DataValidator.class.php
<?php
class DataValidator extends ErrorHandler
{
private $str;
public function __construct(string $str) {
$this->str = $str;
}
public function length(int $min, int $max = 9999) {
if (mb_strlen($this->str) < $min or mb_strlen($this->str) > $max) {
$this->setError(self::LOGIN_ERR);
}
}
}
------
<?php
abstract class ErrorHandler
{
private $errors = [];
protected const LOGIN_ERR = 'Username or passord incorrect';
protected const DB_ERR = 'Database connection failed';
protected const UNKNOWN_ERR = 'An unkown error occured';
protected function setError($error) {
$this->errors[] = $error;
}
protected function getErrors() {
return $this->errors;
}
}
Проблема: как сделать Я получаю ошибку при входе в систему. php? Я хочу, чтобы он был объектно-ориентированным, поэтому я сделал ErrorHandler абстрактным. Должен ли я сделать другой метод в DataValidator, чтобы получить существующие ошибки из ErrorHandler, или есть лучшее решение? Или, может быть, вся моя концепция неверна? Заранее спасибо!