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

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

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

Сообщение HaligaliCopter »

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

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

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

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

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

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

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

Сообщение chesar »

Можете подсмотреть тут https://github.com/2amigos/yii2-usuario
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

Как раз для сбора всего этого воедино в Yii2 посмотрите http://www.elisdn.ru/yii2-shop. Все вопросы отпадут.
HaligaliCopter
Сообщения: 2
Зарегистрирован: 2017.08.07, 11:11

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

Сообщение HaligaliCopter »

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

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

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

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

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

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

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

В какую модель мне добавлять остальной функционал касающийся работы с Юзером, например метод смены аватарки юзера, установка даты рождения? Всё в этой же модели User?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

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

Вот так хранится всё: https://github.com/samdark/yiipowered/b ... andler.php
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

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

Сообщение mkramer »

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

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

Сообщение maleks »

mkramer писал(а): 2017.11.07, 12:23 Ну когда используется ActiveRecord, есть несколько подходов
  1. Работать с ним прямо в контроллере (не рекомендуется, но в простых случаях вполне себе работает)
  2. Вынести это в отдельный, так называемый сервисный слой
  3. Реализовать паттерн репозиторий поверх паттерна ActiveRecord. Наиболее гибко, даёт возможность потом уйти от ActiveRecord
А из репозитория что будет возвращаться? Не AR объекты?
Yii2 universal module sceleton - for basic and advanced templates
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

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

Сообщение mkramer »

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

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

Сообщение maleks »

mkramer писал(а): 2017.11.08, 00:16
maleks писал(а): 2017.11.07, 16:59 А из репозитория что будет возвращаться? Не AR объекты?
Ну я читал рекомендацию мэпить AR-объекты на объекты бизнес-логики,
Т.е. это понимать как утвердительный ответ на вопрос выше?:
Не AR объекты?
Yii2 universal module sceleton - for basic and advanced templates
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

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

Сообщение mkramer »

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