@Rasmusen505

Что корректно выносить в отдельный класс для веба?

Здравствуйте. Делаю учебный проект на php (опыт - около года) и уже во 2й раз меняю его архитектуру. Все дело в том, что я до конца не могу осмыслить, какие части, в данном случае, серверной части сайта нужно выносить в отдельный класс? Допустим, у меня на проекте есть 2 типа пользователей: администраторы и обычные юзеры, а также доска объявлений. Изначально я сделал для всех пользователей класс юзер, который отвечал и за регистрацию, и за авторизацию. В общем , за все, к чему относится пользователь (кроме БД и классы с лотами). И вот я почесал репу и подумал, что для авторизированного пользователя нужен свой класс, для регистрации - тоже, как и для методов проверки валидности данных при регистрации например.
В общем, я бы хотел научиться чувствовать и понимать, что действительно нужно выносить в отдельный класс, а что можно в качестве методов оставить в каком-то классе, сделав его побольше.
Заранее спасибо!
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
Tpona
@Tpona
Ужасный перфекционист
Rasmusen505,
Регистрация, авторизация это процессы, пользователь - это сущность.
Процесс может затрагивать много сущностей, сущность может участвовать во множестве процессов.
В случае авторизации в процессе может быть задействовано множество классов:
- Классы форм представлений (View), которые отрисовывают сами формы и биндят в них параметры модели формы.
- Классы моделей форм регистрации/аутентификации, которые так же могут и валидировать форму.
- Класс UserIdentity, реализующий интерфейс IIdentity отвечающий за аутентификацию пользователя.
- Класс пользователя, который часто и реализует интерфейс IIdentity.
- Классы контроллеров, которые обрабатывают запросы и находятся между представлением и моделями, например. Это если мы говорим об арзитектуре MVP.

Регистрация пользователя - это процесс, в котором может участвовать множество классов и делает он приблизительно следующее:
1) Получает от пользователя информацию о регистрационных данных (Класс представления и класс модели формы)
2) Валидация данных пользователя при отправке запроса на регистрацию (Контроллер получает от представления (View) информацию, создает модель(класс) User и выполняет сохранение)
3) Если в базе такой пользователь уже есть (проверка на уровне модели/СУБД на уникальность определенных полей), то контроллер от модели транслирует ошибки в класс формы и пользователь их исправляет.
4) Если все ок, то пользователю выдается сообщение об успешной регистрации (ответ от контроллера) и контроллер шлет ссылку о подтверждении регистрации по email (тут сохраняется токен привязанный к записи в таблице пользователей, нужен для генерации ссылки на подтверждение регистрации, по нему потом ищется нужный пользователь для его активации).
5) Далее уже другой контроллер или другой метод этого же контроллера обрабатывает ссылку и выставляет флаг через модель пользователя о том, что регистрация подтверждена.

Я думаю, что Вы путаете класс регистрации с моделью формы регистрации.
Тогда путаница в терминологии и ход мыслей правильный.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы