В каком методе определять данные юзера? Итак, есть класс UserOperator, который в числе прочего отвечает за выполнение юзером входа. В нём есть такие методы:
1) getUser() - получение юзера из БД по логину/паролю. Если логин/пароль по данным БД не совпали, этот метод дергает другой метод:
2) writeFailedAttempt() - метод записи неудачной попытки входа (в БД конечно же), который должен записать введенный логин, юзерагент и IP.
Также имеются:
3) метод getRealIP возвращает IP посетителя.
4) метод getUserAgent возвращает юзерагент посетителя.
Что меня озадачило: есть несколько вариантов:
1. Определять ip и useragent в методе getUser(), то есть дергать сразу writeFailedAttempt($login, $this->getRealiP(), $this->getUserAgent()) .
2. Определять ip и юзерагент уже внутри метода writeFailedAttempt().
3. Определять всё это еще в конструкторе класса, перенеся туда тела методов getUserAgent() и getRealIp() и записывая значения в соответствующие свойства объекта.
4. Присваивать значения свойствам также в конструкторе, но делать это с помощью соответствующих методов (не переносить тела методов в конструктор).
Просто не знаю, какому принципу здесь надо следовать, и потому не могу определить, какой вариант самый правильный.

21 Авг 2019 в 07:07
176 +1
0
Ответы
1

Каждый из предложенных вариантов имеет свои плюсы и минусы, и выбор зависит от конкретных требований проекта и предпочтений разработчика. Однако, в целом, следует стремиться к тому, чтобы методы были максимально простыми, понятными и модульными.

Определять IP и user agent в методе getUser():
Этот вариант не является оптимальным, так как метод getUser() должен быть отвечать только за получение пользователя из БД, и не должен заниматься другими дополнительными задачами.

Определять IP и user agent в методе writeFailedAttempt():
Этот вариант более предпочтителен, так как метод writeFailedAttempt() отвечает за запись неудачной попытки входа, и определение IP и user agent является частью этой операции.

Определять все в конструкторе класса:
Этот вариант может быть удобным, если IP и user agent будут использоваться не только в методе writeFailedAttempt(), но и в других методах класса. Однако, следует помнить, что конструктор должен быть легким и не перегруженным сложными операциями.

Присваивать значения свойствам в конструкторе с помощью методов:
Этот вариант также может быть удобным, так как он разделяет инициализацию свойств их использование, что делает код более читаемым.

В целом, рекомендуется выбирать вариант, который делает код более читаемым, модульным и поддерживаемым. В данном случае, определение IP и user agent в методе writeFailedAttempt() кажется наиболее логичным и удобным вариантом.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир