Как организовать проверку аватара? Нормально ли выполнение сущностью действий над собою?

Вопрос касается больше не самой проверки файла, а логики работы с ООП.

Итак, юзер при регистрации загружает через форму аватар. В массиве FILES сохраняется оригинальное имя файла, имя временного файла, MIME, размер файла.
Далее надо этот аватар всячески проверить: проверить размер картинки, расширение (на вхождение в список допустимых), и т. п.
Вопрос - как правильно реализовать это в ООП? Вариантов как всегда миллион.

1. Создать не основе входных данных экземпляр класса Avatar, у которого будут методы checkExtension(), checkResolution(). Этот способ мне кажется нелогичным, так как в данном случае объект будет производить действия над самим собой - получать разрешение картинки и т. п.

2. Создать объект класса Avatar, но в классе этом будут только свойства. Дополнительно сделать класс AvatarChecker, экземпляру которого передавать объект Avatar. В чекере уже будут методы проверки.

3. То же самое, но реализовать проверку статически, одним методом (который, возможно, будет вызывать другие методы своего класса):
AvatarChecker::check(new Avatar(...))

Так что вопрос - какой вариант будет самым логичным? И прав ли я, что неправильно, когда сущность выполняет действия над собой, как в первом варианте? Примером этого еще может быть что-то вроде саморегистрации пользователя:
User::register() вместо Registrator::register(User $user).

Спасибо.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
@kedavra
code berserker
Сущность не должна что-то проверять, регистрировать, поэтому AvatarChecker. Или как вариант - метод checkAvatar() у Registrator-а, но это не так гибко, т.к. проверять аватар может еще где-нибудь понадобиться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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