Работаю на Yii2.
Есть модель. Пусть это будет анкета пользователя с множеством различных данных(User).
Есть класс, который в зависимости от данных этой анкеты и формирует, например, размер скидки для пользователя(пусть это будет класс FDiscount).
Вопрос в том как правильно сделать передачу данных в класс?
Я вижу два выхода:
Меня тянет ко второму варианту. Сейчас все работает по первому.
Как будет правильно? Или может быть существует другое решение?
В DDD подходе используется паттерн DTO(Data Transfer Object), суть этого паттерна - создать типизированную структуру для передачи данных.
То есть вы создаете класс, к примеру UserDTO
который принимает объект User
и берёт только те данные которые вам нужны. И потом вы в своем классе FDiscount
принимаете уже UserDTO
в котором лежит то что вам нужно. Можете прочитать про этот паттерн и реализовать через него, а так если выбирать из вашего списка - я бы выбрал 2-й вариант.
Я бы не стал делать так, чтобы User знал о FDiscount, а FDiscount о User. Лучше передать в FDiscount просто параметры для формирования, например массив или объект простой.
Если у вас работает метод, в котором надо получить скидку, то в нем получаете User, формируете данные для FDiscount и отдаете в FDiscount.
model, например \app\models\User:
public static function dataForFDiscount($user) {
//что то делается с юзером проверяются наличие заполненности
$discount = 0;
if ($user->emailConfirm) {
$discount += 5;
}
return $discount;
}
controller, например \app\controllers\User (откуда вызываешь):
public function actionDiscount() {
....
$discount = \app\models\User::dataForFDiscount(Yii::$app->user);
....
}
Как то так. Самый простой способ.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Где ошибка в коде? В теории код должен работать так чтобы проверять входящие сообщение и отправлять отредактированный ответ исходя из полученногоЕсли...
Доброго времени сутокДелаю мягкое удаление для ресурса, при переходе в виде по ссылке "Восстановить" (ссылка посылает POST к route('announces
Пытаюсь передать зашифрованные данные с одного своего домена на другойВот функция шифрования: