Anonymous
А куда лучше сложные sql запросы помещать?
Dmitry
dto - это когда тебе надо передать именно данные от одного поинта к другому
Dmitry
может быть dto для создания сущности, для обновления, для удаления, для изменения свойств, для передачи в сервис и т.д.
Vitalii
я думал dto соответствует модели, просто инкапсулируя ее поля, без всего лишнего
Anonymous
Тут кто нибудь практикует это dto?
Vitalii
пытаюсь узнать
Dmitry
я думал dto соответствует модели, просто инкапсулируя ее поля, без всего лишнего
нет, это вообще не имеет отношения к модели. это объект для передачи данных
Dmitry
ну субственно Data Transfer Object :)
Anonymous
Самое непонятное, как правильно связывать эти сервисы потом.. прикидываться репозитории как то надо
Anonymous
Допустим сервис блога.. ему юзер нужен
Anonymous
какие сервисы?
Ну обычные же
Anonymous
В идеале все общение с пииложухой надо осуществлять через сервисы
Dmitry
Ну обычные же
есть например сервис создания поста в блоге
Vitalii
понял, тогда это лишнее для меня и по этой тсатье еще один вопрос тогда разница между сервисом и репозиторием в экзампле в контроллере лежит только сервис, а он уже дергает репозиторий какая тут логика? я раньше всегда представлял себе сервис паралельно репозиторию
Anonymous
есть например сервис создания поста в блоге
Хм.. и сколько так у тебя сервисов получится?
Dmitry
Хм.. и сколько так у тебя сервисов получится?
много, но они маленькие, их легко тестировать, легко переиспользовать, легко подменять
Anonymous
Иначе сколько у тебя в контроллере зависимостей будет
Dmitry
Иначе сколько у тебя в контроллере зависимостей будет
смотря что ты под контроллером подразумеваешь. Обычно там 1 сервис
Anonymous
Ну даже в статье там userservice он работает с юзерами
Anonymous
Ты бы его разбил на createuser и ТП?
Anonymous
конечно
Ты понимаешь что сервис своего рода фасад.. а ты хочешь сделать куча связей в системе
Dmitry
в контроллере у тебя будет actionCreateUser(CreateService $service) $servise->createUser($data)
Anonymous
в контроллере у тебя будет actionCreateUser(CreateService $service) $servise->createUser($data)
Почему создавать юзера не может единый сервис который управляет юзерами
Anonymous
Вообще юзер не создаётся а регистрируется в контексте бизнес логики
Anonymous
Чем сервис не фасад
Dmitry
Чем сервис не фасад
ты понимашь что такое фасад?
Dmitry
именно шаблон проектирования?
Maksim (Ellrion)
Чем сервис не фасад
Ничто не фасад кроме фасада же)
Vitalii
окей, вот, например есть такой юзкейс есть пост, у него из "не родных" пропертис есть категории, теги и изображение категории установлены статически, т.е. прилетает id а теги динамически, могут создаваться новые, при добавлении статьи, т..е. прилетает массив строк собственно что нам по итогу нужно сделать 1) сохранение изображения (обрезка, вотермарк, сжатие или еще что то) 2) нормализация тегов, т.е. из этого массива строк нужно получить массив идентификаторов 3) все это вместе сохранить можешь пожалуйста, описать какие в этом примере будут сервисы, репозитории и что где будет находиться и вызываться это очень здорово помогло бы
Dmitry
Именно он
что такое сервис тогда в твоем понимании ?
Anonymous
Может но не обязан.
userService.register.. разве не так должно быть?
Anonymous
что такое сервис тогда в твоем понимании ?
Модуль который инкапсулирует бизнес логику
Anonymous
всю логику приложения?
Ну не один сервис, каждый сервис за какую то логическую задачу отвечает
Anonymous
Например расчет скидок каких нибудь или заказ товара
Maksim (Ellrion)
userService.register.. разве не так должно быть?
У меня может быть отдельно UserBuilder или UserRegistrator. А общего сервиса может или не быть или он заниматься может только другими вещами без регистрации
Anonymous
за какую? задачу отвечает мой сервис FooService?
Ты издеваешься надо мной? От куда я знаю
Dmitry
Например расчет скидок каких нибудь или заказ товара
вот видишь ты сам приходишь к тому что у тебя должен быть сервис расчета скидок, сервис регистрации заказа. А не все в одном
Dmitry
Ты издеваешься надо мной? От куда я знаю
А вот этот сервис CreateUserService? :)
Anonymous
У меня может быть отдельно UserBuilder или UserRegistrator. А общего сервиса может или не быть или он заниматься может только другими вещами без регистрации
А не лучше поручить общему сервису делегировать работу таким вот подсервиспм и общаться через него?
Anonymous
вот видишь ты сам приходишь к тому что у тебя должен быть сервис расчета скидок, сервис регистрации заказа. А не все в одном
Ну это абсолютно разные задачи.. но делать сервис только для создания поста.. зачем
Dmitry
Ну это абсолютно разные задачи.. но делать сервис только для создания поста.. зачем
затем что он может содержать огромное кол-во логики, но он отвечает только за создание поста
Dmitry
его зависимости не влияют на обновление поста или удаление
Maksim (Ellrion)
А не лучше поручить общему сервису делегировать работу таким вот подсервиспм и общаться через него?
Зависит от количества таких подсервисов и от реальной их необходимости реиспользования и от объема кода в них и так далее
Anonymous
При чем почему вообще должен быть сервис который позволяет создавать юзера? Юзер регистрируется а не создается
Vitalii
зайчики, прыгните к моему сообщений плиз
Vitalii
😱
Dmitry
При чем почему вообще должен быть сервис который позволяет создавать юзера? Юзер регистрируется а не создается
это смотря где ты и что делаешь. Через консоль например может и создаваться
Anonymous
Окей.. а как вы с бд работаете в сервисах?
Anonymous
Eloquent нахер я так понимаю?
Maksim (Ellrion)
При чем почему вообще должен быть сервис который позволяет создавать юзера? Юзер регистрируется а не создается
А вот и не обязательно. У меня регистрацит может не быть я именно создаю юзера. Это уже семантика именования зависящая от реального приложения.
Anonymous
И репозитории за сервисами прикидывать тогда?
Maksim (Ellrion)
В пзду репозитории с ар
Dmitry
зайчики, прыгните к моему сообщений плиз
ты просто сам себе проговори что долно делаться. Пришел запрос, я создаю пост, даю ответ. Так, дальше. Внутри "я создаю пост" я создаю инстанс поста добавляю ему теги и картинку. Дальше ... Т.е. иди от крупного к мелкому
Anonymous
В пзду репозитории с ар
Ну доктрин же значит
Anonymous
Согласен что ар с репозиториями это дерьмо
Dmitry
Ну доктрин же значит
в чем разница то?
Anonymous
в чем разница то?
Разница с чем
Maksim (Ellrion)
Ну доктрин же значит
Или просто ар и мб где нужно квери обжекты
Dmitry
как orm влияет на твою логику приложения?
Anonymous
как orm влияет на твою логику приложения?
Речь о том чтобы выкинуть елоквент
Vitalii
ты просто сам себе проговори что долно делаться. Пришел запрос, я создаю пост, даю ответ. Так, дальше. Внутри "я создаю пост" я создаю инстанс поста добавляю ему теги и картинку. Дальше ... Т.е. иди от крупного к мелкому
с таким подходом у меня все будет в контроллере я хочу на примере увидеть что выносится в сервис, что в репозиторий а то у меня пока что в голове все в репозиторий тянется, кроме сохранения файла