В каком методе определять данные юзера? Итак, есть класс 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
201 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир