@bedolazhka

Можно ли тут как-то избавится от плагиата?

Пациент
public function signupFormValidator()
    {
        if (empty($this->login)) {
            $this->error = 'Вы не ввели логин';
            return false;
        }
        if (!filter_var($this->login, FILTER_VALIDATE_REGEXP, [
            'options' => [
                'regexp' => '#^[a-z]+(?:\s[a-z]+)*$|^[а-яё]+(?:\s[а-яё]+)*$#ui'
            ]
        ])) {
            $this->error = 'Вводите латинские или русские буквы и пробел';
            return false;
        }
        if (mb_strlen($this->login) < 3) {
            $this->error = 'Логин короче 3 букв';
            return false;
        }
        if (mb_strlen($this->login) > 15) {
            $this->error = 'Логин длиннее 15 букв';
            return false;
        }
        if (empty($this->password)) {
            $this->error = 'Вы не ввели пароль';
            return false;
        }
        if (!filter_var($this->password, FILTER_VALIDATE_REGEXP, [
            'options' => [
                'regexp' => '#^[\S]{0,}$#'
            ]
        ])) {
            $this->error = 'Вводите пароль без пробелов';
            return false;
        }
        if ($this->login == $this->password) {
            $this->error = 'Логин и пароль не должны совпадать';
            return false;
        }
        if (empty($this->email)) {
            $this->error = 'Вы не ввели email';
            return false;
        }
        if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
            $this->error = 'Email введён неправильно';
            return false;
        }
        return true;
    }

Дело в том, что раньше у меня было везде
return $this->error = 'Какое-то сообщение, которое выводится в отдельном блоке вывода сообщений для пользователя';

то есть ретурном останавливаем выполнение кода и устанавливаем свойство, но как мне пояснили - это очень древний подход.

А что разве правильно, что я ретурн фолс сто раз пишу?
Как от плагиата избавится?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
@bedolazhka Автор вопроса
Оставить без изменений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
FanatPHP
@FanatPHP
Чебуратор тега РНР
Валидация форм ввода - отдельный специальный случай.
И валидировать по одному полю - это действительно дикость и маразм.
Если посмотреть на любой нормальный сайт, он не пишет тебе ошибки по одной. Он подсвечивает сразу все неправильно заполненные поля.

Поэтому возврат должен быть действительно только один, а все ошибки собираться в массив.

Да, и посмотри в словаре значение слова "плагиат"
Ответ написан
By_Engine
@By_Engine
Не вижу ничего в этом плохого. Если произошла ошибка, то метод возвращает текст ошибки, что можно прировнять к true, иначе нет ошибок - false
Ответ написан
Tomio
@Tomio
backend developer (python, php)
Собирайте ошибки в массив $this->errors, если они будут возникать. И в конце проверяйте, если количество элементов в массиве с ошибками больше 0, то возвращайте false. И при необходимости сможете потом все ошибки вытащить из $this->errors.
Ответ написан
@Arik
Если совсем не хочется как во фреймах делают, а хочется в таком простом топорном, то я бы так сделал:
public function signupFormValidator(): bool
{
    $this->error = $this->getErrorSignupForm();

    return $this->error !== NULL;
}

protected function getErrorSignupForm(): ?string
{
    if (date('d') == 1) {
        return 'Не сегодня';
    }
    // остальные проверки
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы