Архитектура приложения

Обсуждаем, как правильно строить приложения
Ответить
HaligaliCopter
Сообщения: 2
Зарегистрирован: 2017.08.07, 11:11

Архитектура приложения

Сообщение HaligaliCopter » 2017.08.07, 11:24

Здравствуйте. У меня проблемы с архитектурой приложения на Yii2. Я как бы прочитал уже уйму статей на хабре, отдельные мануалы по темам, какая часть как используется я понимаю, но не могу собрать всё воедино и заставить работать! По сравнению с симфони мне не ясно где и что реализовывать.

Есть у меня юзер, в виде модели по пути models\User.php

Мне нужно осуществлять вход по openid и если юзер новый то добавлять данные в БД, как бы регистрировать его. Где должно происходить это добавление? В это модели models\User.php?

Далее. Мне нужно работать с юзером, оперировать его данными анкетными данными. То есть вообще всё будет вертеться вокруг сущности User. Опять же это та же модель models\User.php? Мне в неё добавлять свойства, методы, хелперы и т.д.?

Третье. Куда писать маршруты и правила доступа для них?

И еще есть уйма вопросов. Я понимаю что пойдут ответы "дело твоё" и "делай как ты хочешь". Но я не знаю как хочу! Есть какой-то пример архитектуры который можно взять за основу? Чтобы уже было понятно где модели, где маршруты, где сервисы?

chesar
Сообщения: 406
Зарегистрирован: 2013.04.10, 17:49

Re: Архитектура приложения

Сообщение chesar » 2017.08.07, 12:38

Можете подсмотреть тут https://github.com/2amigos/yii2-usuario

Аватара пользователя
ElisDN
Сообщения: 4642
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Архитектура приложения

Сообщение ElisDN » 2017.08.07, 13:51

Как раз для сбора всего этого воедино в Yii2 посмотрите http://www.elisdn.ru/yii2-shop. Все вопросы отпадут.
Не забудьте пройти мастер-класс по Yii2.

HaligaliCopter
Сообщения: 2
Зарегистрирован: 2017.08.07, 11:11

Re: Архитектура приложения

Сообщение HaligaliCopter » 2017.08.08, 22:10

Это что-то очень круто. Воедино собрано слишком много... но спасибо, я открываю и смотрю.

Вопрос более конкретный.

Юзер авторизуется через социальную сеть и ТОЛЬКО! Я поставил компонент eauth (https://github.com/Nodge/yii2-eauth-demo)

Мне нужно при первом входе запомнить его ID в БД, где-то сохранить что он авторизовался (наверное в сессии) и в дальнейшем использовать его учетные данные из БД.

Создал модель User extends ActiveRecord implements IdentityInterface и застопорился.

Где я должен делать инсерт в БД когда юзер еще новый? В этой модели в методе findByEAuth? Или в другом месте?

Где я должен сохранять его в сессию?

В какую модель мне добавлять остальной функционал касающийся работы с Юзером, например метод смены аватарки юзера, установка даты рождения? Всё в этой же модели User?

Аватара пользователя
samdark
Администратор
Сообщения: 8624
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Архитектура приложения

Сообщение samdark » 2017.08.09, 18:54

Для авторизации через социалки лучше официальный yii2-authclient.

Вот так хранится всё: https://github.com/samdark/yiipowered/b ... andler.php

mkramer
Сообщения: 433
Зарегистрирован: 2014.12.14, 13:02

Re: Архитектура приложения

Сообщение mkramer » 2017.11.07, 12:23

Ну когда используется ActiveRecord, есть несколько подходов
  1. Работать с ним прямо в контроллере (не рекомендуется, но в простых случаях вполне себе работает)
  2. Вынести это в отдельный, так называемый сервисный слой
  3. Реализовать паттерн репозиторий поверх паттерна ActiveRecord. Наиболее гибко, даёт возможность потом уйти от ActiveRecord
  4. Комбинация трёх выше перечисленных методов. Ну, собственно, что я обычно делаю.

Аватара пользователя
maleks
Сообщения: 1512
Зарегистрирован: 2012.12.26, 12:56

Re: Архитектура приложения

Сообщение maleks » 2017.11.07, 16:59

mkramer писал(а):
2017.11.07, 12:23
Ну когда используется ActiveRecord, есть несколько подходов
  1. Работать с ним прямо в контроллере (не рекомендуется, но в простых случаях вполне себе работает)
  2. Вынести это в отдельный, так называемый сервисный слой
  3. Реализовать паттерн репозиторий поверх паттерна ActiveRecord. Наиболее гибко, даёт возможность потом уйти от ActiveRecord
А из репозитория что будет возвращаться? Не AR объекты?

mkramer
Сообщения: 433
Зарегистрирован: 2014.12.14, 13:02

Re: Архитектура приложения

Сообщение mkramer » 2017.11.08, 00:16

maleks писал(а):
2017.11.07, 16:59
А из репозитория что будет возвращаться? Не AR объекты?
Ну я читал рекомендацию мэпить AR-объекты на объекты бизнес-логики, чтоб потом можно было, при необходимости/желании подменить AR на прямой SQL или что-то ещё

Аватара пользователя
maleks
Сообщения: 1512
Зарегистрирован: 2012.12.26, 12:56

Re: Архитектура приложения

Сообщение maleks » 2017.11.08, 09:38

mkramer писал(а):
2017.11.08, 00:16
maleks писал(а):
2017.11.07, 16:59
А из репозитория что будет возвращаться? Не AR объекты?
Ну я читал рекомендацию мэпить AR-объекты на объекты бизнес-логики,
Т.е. это понимать как утвердительный ответ на вопрос выше?:
Не AR объекты?

mkramer
Сообщения: 433
Зарегистрирован: 2014.12.14, 13:02

Re: Архитектура приложения

Сообщение mkramer » 2017.11.09, 10:41

maleks, да. Не скажу, что сам всегда так делаю, но здравая мысль в этом есть

Ответить