Задать вопрос

(Yii2) Какой лучший способ работы с аватарами пользователей?

1) Должны ли методы для работы с аватарой быть отделены от User Model?

2) Где методы должны быть расположены?

3) Как User Model сможет получить к ним доступ и должна ли она, вообще, иметь к ним доступ?
  • Вопрос задан
  • 2672 просмотра
Подписаться 8 Оценить Комментировать
Решения вопроса 1
SamDark
@SamDark
Yii2 core team
1) Желательно.
2) В отдельном классе.
3) Можно по-разному сделать. Я бы для удобства сделал как-то так:

class AvatarManager
{
}

class User
{
    private $avatarManager;

    protected function getAvatarManager()
    {
        // здесь можно устроить и честный dependency injection, если планируется писать
        // честные модульные тесты или есть подозрения, что менеджеров будет не один
        return $this->avatarManager === null ? new AvatarManager($this) : $this->avatarManager;
    }

    public function getAvatarUrl($width, $height)
    {
         return $this->getAvatarManager()->getUrl($width, $height);
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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