
Sergey
09.05.2017
12:42:06
randomHash()
function randomHash()
{
return bin2hex(openssl_random_pseudo_bytes(16));
}
если ооочень хочется можно сделать это сервисом
но тут уже надо смотреть на здравый смысл... OCP соблюден, SRP соблюдено

Google

Sergey
09.05.2017
12:43:38
лично я ленивый

Like
09.05.2017
12:46:09
А что такое User ?)

Sergey
09.05.2017
12:46:14
почитай
и не забудь почитать в конце

Like
09.05.2017
12:47:16
Мне это напоминает сущность которая должна предоставлять доступ для работы с базой (таблицей)
почитай
Фигово читается, шея ноет, инфа не воспринимается :(

Sergey
09.05.2017
12:47:53
забудь про базу данных. Представь что у тебя объекты просто вечно живут в оперативке

Like
09.05.2017
12:48:13
Ну тогда лады)

Sergey
09.05.2017
12:57:58
может кто еще хочет подискутировать на тему SRP?

Like
09.05.2017
12:58:10
Серега, иди выпей лучше)

Sergey
09.05.2017
12:58:18
да я вчера уже
а то мне тренироваться объяснять эти штуки)

Like
09.05.2017
12:58:27
Сегодня тоже)
Хватит о солиде

Google

Sergey
09.05.2017
12:58:37
никогда не хватит о солиде)

Oleg
09.05.2017
13:02:46
кстати что почитать о солиде ,
??

Like
09.05.2017
13:03:25

Oleg
09.05.2017
13:04:42

Andrey
09.05.2017
14:30:27

Sergey
09.05.2017
14:31:16
суть в том что в типичном цикле разработки (делаем дела - рефакторим - коммитим) проверка на соответствие принципам SOLID по хорошему должна происходить вот в момент рефакторинга
проблему тут могут быть только с тем что стэп "рефакторим" у многих пропущен
а видеть "на перед" бывает далеко не так просто)
p.s. я не так много проектов видел где есть разделение User и Credentials (или похожее)

Like
09.05.2017
14:35:47
Ну хз
У меня один класс который содержит бизнес логику
Ну и эта модель независима в целом
Там уже в контроллерах юзается так как нужно
Поэтому все что с юзером - в одном классе

Sergey
09.05.2017
14:36:38

Like
09.05.2017
14:36:48
Чисто делегатор для eloquent
А реализация в моделях

Sergey
09.05.2017
14:37:06
я просто хз как это в eloquent организовано, я привык к unit of work

Like
09.05.2017
14:37:29
Наглядно
Так сказать

Google

Sergey
09.05.2017
14:37:42
и плохо себе представляю как без UoW персистенс


Andrey
09.05.2017
14:51:50
с самого начала можно сделать и так, а уже когда рефакторишь (красный - зеленый - рефакторинг) можно уже разделить.
я так и знал, что ты меня троллишь, а не защищаешь такой подход )))) но поспорить я люблю, поэтому меня это устраивает )
вроде в "рефакторинге с использованием шаблонов" Кириевски было написано, что намного проще (если даже не лучше/правильнее) работать с кодом, где все как попало, нет ни одного шаблона и т.д., типа тогда его намного легче приводить к тому виду, который будет оптимальным на данном этапе,
т.е. тот же самый "зеленый-рефакторинг" (мне самому нравится этот подход)
но опять же: мне не нравится active record (не из-за srp, просто не нравится), но на работе используем его,
т.е. я не всегда делаю/использую то, что мне нравится ("больной на голову шаблонами" вряд ли про меня))), и на рефакторинг у нас времени никогда нет (есть код еще из 2010, все руки не доходят, а такой код все копится и копится)


Sergey
09.05.2017
14:52:22
я так и знал, что ты меня троллишь, а не защищаешь такой подход )))) но поспорить я люблю, поэтому меня это устраивает )
вроде в "рефакторинге с использованием шаблонов" Кириевски было написано, что намного проще (если даже не лучше/правильнее) работать с кодом, где все как попало, нет ни одного шаблона и т.д., типа тогда его намного легче приводить к тому виду, который будет оптимальным на данном этапе,
т.е. тот же самый "зеленый-рефакторинг" (мне самому нравится этот подход)
но опять же: мне не нравится active record (не из-за srp, просто не нравится), но на работе используем его,
т.е. я не всегда делаю/использую то, что мне нравится ("больной на голову шаблонами" вряд ли про меня))), и на рефакторинг у нас времени никогда нет (есть код еще из 2010, все руки не доходят, а такой код все копится и копится)
я на самом деле категарически против выноса логики из объектов где им самое место
> нет ни одного шаблона
они так и так будут если ты принципы соблюдаешь.
> мне не нравится active record
так я ж его и не юзаю) у меня честный data mapper
при active record все усложняется тем что у тебя стэйтом будет модель данных
но объектную модель ты все так же можешь делать
(опять же я так делать не пробовал, я просто по другому не предсталяю себе active record на хоть сколько нибудь большом проекте)
> и на рефакторинг у нас времени никогда нет
это быстрее чем проектировать upfront придумывая миллион кейсов которых не будет. Ну то есть проектировать upfront чуть чуть да надо, но надо знать когда остановиться
а на рефакторинг время есть всегда
так же как и на тесты


Sergey
09.05.2017
14:55:16
это все отговорки)
потому как в сумме при рефакторинге и тестах ты за то же время сделаешь как минимум столько же
хотя ощущаться это будет "медленнее"

Andrey
09.05.2017
14:56:24

Sergey
09.05.2017
14:56:25
> (есть код еще из 2010, все руки не доходят, а такой код все копится и копится)
принцип бойскаута. Есть лишних 10 минут, напиши тестик или основу для него, вынеси код в отдельный метод...
я вынес в Credentials по итогу
и повторюсь - я категорически против подходов когда данные лежат отдельно от поведения

Google

Andrey
09.05.2017
14:57:15
ну вот, туда бы и вынес

Sergey
09.05.2017
14:57:20
(с active record я просто данные воспринимаю как тупую структуру которая хранится в объекте с логикй)
ну то есть это не сервис
так как таким объектам нечего делать в контейнере с сервисами

Andrey
09.05.2017
15:03:14
у нас аутсорс своего приложения, кодовая база для кучи клиентов одна с небольшими изменениями, те же логины могут отличаться незначительно (кому просто логина хватит, кому с sms, а кому и гугловские коды подавай дополнительно (забыл название),
поэтому либо придется кучу одинаковых user делать с разницей в аутентификации, либо сразу отдельно выносить - выбирать не приходится ))) поэтому я изначально против аутентификации в пользователе

Sergey
09.05.2017
15:04:21
> а кому и гугловские коды подавай дополнительно (забыл название),
это все стратегии двухфакторной аутентификации
прикол в том что двухфакторную аутентификацию ты за один раз всеравно не сможешь сделать так что тебе всеравно нужен какой-то слой перед пользователем (или кредами)
и прикол в том что первый стэп двухфакторной аутентификации ничем не отличается от однофакторной
ты всеравно должен сделать сессию, просто с ограниченными правами
в application level логике я ничего плохого не вижу.

Admin
ERROR: S client not available

Sergey
09.05.2017
15:06:39
другой вариант - подтипы. Когда у тебя в одной таблице записи просто мэпятся на разные реализации
но это сложнее да
у меня просто текущий проект с такой же историей
есть ecom платформа и вайт лейблы
каждому подавай какой-нибудь кастом

Артур Евгеньевич
09.05.2017
20:02:48
Парни достаточно ли емкко поисано здесь отличия декоратора от прокси
Декоратор и Заместитель имеют похожие структуры, но разные назначения. Они похожи тем, что оба построены на композиции и делегировании работы другому объекту. Паттерны отличаются тем, что Заместитель сам управляет жизнью сервисного объекта, а обёртывание Декораторов контролируется клиентом.
или есть еще какие то отличия:

Evgeniy
09.05.2017
20:16:28
обычно в декоратор не передают объект которые декорируют

Google

Evgeniy
09.05.2017
20:16:53
хотя это дело вкуса создавать экземпляр в конструкторе
имхо
декаратор просто помимо вызова основного метода может что то вызвать до и после вызова

Aleh
09.05.2017
20:23:30

Evgeniy
09.05.2017
20:24:48
там написано что заместить сам управляет жизнью объекта
а декоратор не управляет, из того что написано выше как бы можно подумать что следует

Sergey
09.05.2017
20:27:54
ну то есть это не декоратор, это херня какая-то

Like
09.05.2017
20:29:09

Evgeniy
09.05.2017
20:29:50
это как?
условно можно объект что декорируешь передать в конструкторе
типо внедрение зависимостей все дела и ты такой правильный

Sergey
09.05.2017
20:30:08
декорируемая штука - просто еще одна зависимость декоратора

Evgeniy
09.05.2017
20:30:39
ну или он может его внутри себя создать

Sergey
09.05.2017
20:30:45
теряется вся суть декоратора и вообще зачем так делать

Evgeniy
09.05.2017
20:30:58
да легко может, просто это не канонично и возможно не правильно

Sergey
09.05.2017
20:31:20
нет, в этом ровным счетом нет никакого смысла

Evgeniy
09.05.2017
20:31:24
но я такое видел))))

Sergey
09.05.2017
20:31:25
представь тест для этой херни

Evgeniy
09.05.2017
20:31:41
я согласен что получится возможно херня)

Sergey
09.05.2017
20:31:42