
Yury
20.12.2017
17:09:58

Alexey
20.12.2017
17:10:00
Работаем, братья

Yury
20.12.2017
17:10:03
спасибо, то что нужно

Mr.
20.12.2017
17:10:20
не за что, обращайтесь

Google

A
20.12.2017
17:28:16

Narzik
20.12.2017
17:44:57
помогите,как работает elasticSearch?

Maxim
20.12.2017
17:45:41
И бан добавь, что если 5 рейтов поймал - бан 5 сек, еще 5 - умножай время бана на 5
Как нибудь так для начала
Бомбу можно попробовать скидывать. На хабре описание есть

Дмитрий
20.12.2017
17:52:26

Maxim
20.12.2017
17:52:39
Точно!

Дмитрий
20.12.2017
17:52:57
А чем она сопсна поможет
Прочитал) Веселая штука)
https://habrahabr.ru/post/332580/

Evgeniy
20.12.2017
18:00:07
Тополь М уже нужен ;)

Wierus
20.12.2017
18:06:50
Приветствую! Обновился с 2.0.12 на 2.0.13.1 и полетело расширение johnitvn/yii2-rbac-plus
При добавлении новой записи ошибка: Missing argument 1 for johnitvn\rbacplus\models\Permission::find(), called in \vendor\yiisoft\yii2\validators\UniqueValidator.php on line 210 and defined \vendor\johnitvn\yii2-rbac-plus\src\models\Permission.php и далее по стеку.

Google

SiZE
20.12.2017
18:10:00

Wierus
20.12.2017
18:10:10
У кого работает это расширение в текущей версии, нужно что-то еще шаманить?

SiZE
20.12.2017
18:12:01
Missing argument 1 for johnitvn\rbacplus\models\Permission::find()
ошибка не двусмысленно намекает на то что что-то не так
а именно на то что автора рожали стоя

Wierus
20.12.2017
18:13:20
Там с валидатором unique проблема, если я его убираю, то все работает. Но до обновления и так работало

SiZE
20.12.2017
18:13:33
ну так ты его сам добавил походу
короче дело не в бобине

Иван
20.12.2017
18:27:10
Народ, не ради срача пишу, помощь логическая нужна. Пишу проект по принципам DDD. Нужно проверить, есть ли у пользователя активная подписка (сущность User, сущность Subscribe с полем userId). Пишу в SubscribeRepository метод existActiveByUserId(int $userId) : bool, где будет уже запрос в бд...но что - то мне подсказывает, что не репозиторий должен это делать. Но чья это зона ответственности? Репозиторий - хранилище, вроде коллекции. Пока писал - понял, что видимо сам юзер должен это знать, есть ли у него активные подписки. Вроде $user->isHaveActiveSubscribe() : bool. Если не прав - поправьте плз. P.S. Срач про надобность/ненадобность DDD просьба не разводить

SiZE
20.12.2017
18:28:00
а что говорит сервис

Иван
20.12.2017
18:28:23
ну в сервисе и надо узнать

SiZE
20.12.2017
18:28:38
так сервис не знает что ему надо или как?

Иван
20.12.2017
18:29:09
Знает, $subscribeService->subscribe(SubscribeForm $form)
Сервис подписки
в нем надо узнать, прежде чем подписывать, есть ли у юзера подписка
Кстати, еще вот такой вопрос: может ли репозиторий вернуть null вместо сущности? Repository->get(777)
или должен Exception выплюнуть, если записи запрашиваемой не существует?

Дмитрий
20.12.2017
18:38:52
Репозиторий что то достает из БД. Хорошо если это набор данных, не очень хорошо если одно конкретное поле

SiZE
20.12.2017
18:46:36

Google

Иван
20.12.2017
18:48:37

Дмитрий
20.12.2017
18:48:52
Имхо лучше null, а в сервисе на это проверять и кидать уже эксепшн
Нарвался на проблемы просто при выкидывании эксепшенов из репозитория

SiZE
20.12.2017
18:51:35

Иван
20.12.2017
18:52:32
я собственно вот почему спрашиваю
https://github.com/ElisDN/yii2-demo-shop/blob/master/shop/repositories/Shop/BrandRepository.php
тут эксепшены. Все, что тут делает метод get репозитория - это выкидывает эксепшн, если не найдена сущность. Т.е. эмуляция коллекции. Если ты обращаешься к несуществующему элементу коллекции, то ошибка.

SiZE
20.12.2017
18:56:27
Это не принципиально для репозиториев ПМСМ
Читабельней только

Иван
20.12.2017
18:57:51
Ясно, спасибо!

Сергей
20.12.2017
18:57:59

SiZE
20.12.2017
19:21:22

Иван
20.12.2017
19:21:50
есть

SiZE
20.12.2017
19:22:21
есть
репозиторий поидее еще и кеширует все это )

SiZE
20.12.2017
19:22:40
я щас в проекте работаю, где кеширование AR это боль
имеется ввиду хранение объектов AR в памяти процесса
но не 100% обязательно

Иван
20.12.2017
19:29:08
т.е. тут ты бы грубо говоря sql составил бы, получил ответ, и с помощью гидрации создал бы сущность, которая не наследник AR?

SiZE
20.12.2017
19:29:40

Иван
20.12.2017
19:30:00
репозиторий возвращает сущность

Google

Иван
20.12.2017
19:30:07
агрегат

SiZE
20.12.2017
19:30:14
Domain Transfer Object оно возвращает

Иван
20.12.2017
19:30:16
никакой не DTO

Dmitriy
20.12.2017
19:30:42

SiZE
20.12.2017
19:30:56

Иван
20.12.2017
19:31:11

SiZE
20.12.2017
19:31:22
AR это уже реализация

Admin
ERROR: S client not available

SiZE
20.12.2017
19:31:43
в контексте выше
т.е. AR модель которая может и сохранить и в горящую избу войти )

Иван
20.12.2017
19:33:07
Кто, как не репозиторий? Я думал он для того и нужен, чтоб взять на себя всю эту работу, быть абстракцией, коллекцией по сути, которая вернет сущности, а не что - то иное.
Почему DTO? Че ж не сразу массив?)

SiZE
20.12.2017
19:36:11
Сорян

Dmitriy
20.12.2017
19:36:19
+1 DTO =)
Какая разница DTO или VA или не связанную с AR сущность ?
хоть коллекцию или массив возвращай.
главное не привязаваться к AR, DM, GW

SiZE
20.12.2017
19:39:11
Ты правильно говоришь

Иван
20.12.2017
19:42:36
Какая разница DTO или VA или не связанную с AR сущность ?
Суть уловил. Но я приверженец возвращать именно "сущность", а не массив с DTO. Другое дело, что эта сущность зависит от AR...конечно чище было бы в таком случае использовать доктрину. Ну тогда зачем я вообще взял Yii2?) В свое оправдание скажу лишь, что AR мои сущности используют только в плане инфраструктуры, аля http://www.elisdn.ru/blog/109/domain-entities-active-record

Google

SiZE
20.12.2017
19:43:32
DTO можно представить массивом (набором данных), но какой перед тобой массив ты не сможешь определить, а какой перед тобой класс сможешь. И это уже ООП
Ну тогда зачем я вообще взял Yii2?
А это вопрос мучающий многих. В первую очередь, зачем ты взял PHP, во вторую уже все остальное.
Не важно лара, симфони или й. Все равно они на РНР )


Иван
20.12.2017
19:47:30
я знаю что такое DTO. вернув DTO ты знаешь какой перед тобой DTO. Но это всего лишь набор структурированных данных, который не содержит и не может содержать логику, в отличие от сущности. И тебе рано или поздно нужно будет инстанцировать сущность. Так почему тогда не спрятать эту гидрацию внутрь репозитория?

Dmitriy
20.12.2017
19:47:37
и мы знаем какой перед нами dto


Иван
20.12.2017
19:58:03
так прячут гидрацию то в репозитории
именно, но гидрация внутри репозитория для того, чтоб создать сущность!
Пример: У нас есть User, и чтоб его вытащить из допустим бд - нам надо запросить его из UserRepository, который вернет сущность (или агрегат) типа User.
Допустим из UserRepository ты получаешь DTO, предварительно сгидрировав его внутри. Тогда для получения сущности User тебе надо из DTO выполнить вторую гидрацию, которая уже получается будет вне репозитория. Куда выносить тогда этот копипаст? Зачем усложнять этим себе жизнь, если репозиторий сразу может нагидрировать внутри User?
DTO настолько я понимаю нужен только если между слоями пирога надо передать данные


Dmitriy
20.12.2017
20:15:19
и репозиторий возвращает AR
и мы передаем AR что бы сохранить его


Иван
20.12.2017
20:27:00
потому что Employee жестко привязан к AR
Да, согласен, там есть у сущности инфраструктурная зависимость от AR, но это скорее компромис) В слое бизнес логики ты напрямую не дергаешь save() активрекордовский, а сохраняешь сущность через репозиторий, который по сути интерфейс. Тесты тоже AR не трогают, а тестируют лишь логические методы сущности. Чтоб избавиться от AR тебе надо убрать наследование, и удалить инфраструктурные методы типа afterFind()и прочие, которые по коду лежат рядом. Другое дело, что этот AR там осознанно, дабы скрестив ужа с ежом получить выгоды фич фреймворка, не размазывая логику приложения, а используя DDD.
Я думал над тем, чтоб не использовать AR конкретно тут, хотел впилить Doctrine. Но решил, попробовать именно этот подход в этом проекте, хочешь не хочешь - а в Yii2 именно AR в коробке

Vladislav
20.12.2017
20:27:42
Привет пипл
я тут на опен сервер короче и...

Иван
20.12.2017
20:31:56

Vladislav
20.12.2017
20:32:59
дык это только на этом проекте что самое интересное