@symfony_php

Страница 167 из 1418
Sergey
06.04.2017
09:27:43
сущность не должна этим заниматься

юзай сериалайзер отдельно

Pavel
06.04.2017
09:27:59
Тогда контроллеры будут ужасные

Смысла не будет вообще юзать сущность. т.к. я буду создавать обьект а потом в репозитории его из обьекта в массив обратно

Google
Pavel
06.04.2017
09:28:55
Но как без сущности то

А создавать подобие сервиса под это вообще тупо

Есть норм вариант?

Dinar
06.04.2017
09:30:57
Почему у тебя конструктор возвращает сериалайзер?

Andrew
06.04.2017
09:31:00
да - создаешь сервис-фабрику и юзаешь :)

Dinar
06.04.2017
09:31:04
А нет.

Сори.

Pavel
06.04.2017
09:31:23
В сущности?

Массив маппера

Dinar
06.04.2017
09:31:41
Массив можно в сущности

Sergey
06.04.2017
09:31:43
сущности у тебя не должны знать о каких-то гидраторах или маперах

Pavel
06.04.2017
09:31:59
ок. Тогда куда маппер?

Google
Sergey
06.04.2017
09:32:14
в репозиторий можешь заинжектить как вариант

Dinar
06.04.2017
09:32:26
А в сервис засунуть почему нет?

Pavel
06.04.2017
09:32:38
Дк прикинь будет много сущностей

Sergey
06.04.2017
09:32:44
сериалайзер и есть сервис

Pavel
06.04.2017
09:32:50
Че это все в сервисе хранить

Dinar
06.04.2017
09:32:53
Сервис можно инжектить в сервис

Сервис долен выполнять работу простую.

Pavel
06.04.2017
09:33:57
Тогда два абстрактных сервиса. Один в обьект, другой из обьекта с возможностью маппера. Маппер в репозитории. Норм?

Sergey
06.04.2017
09:34:04
Дк прикинь будет много сущностей
ну ты сам подумай. у тебя будет 100 сущностей одного типа, и на каждую сущность тебе нужно создать свой инстанс сериалайзера. это ж убийственно по перформансу

ну и плюс тебе весь этот код копипастой носить по всем типам обьектов

берешь сериалайзер из контейнера, который симфони за тебя зарегал. его инжектишь в репозиторий и там юзаешь

Pavel
06.04.2017
09:34:46
ну и плюс тебе весь этот код копипастой носить по всем типам обьектов
Ну это можно вынести в родительский класс. Так что это не проблема. Но да, я согласен что такое в сущности делать не надо

Dinar
06.04.2017
09:34:54
Вообще для юзер сущности нет проблемы имплементить Serializable

Pavel
06.04.2017
09:35:10
Но репозиторий работает с сущностью. Передавать туда массив тупо

Dinar
06.04.2017
09:35:11
там никого это не смущает :)

Sergey
06.04.2017
09:35:24
serializable это уж совсем для других целей

Dinar
06.04.2017
09:35:34
Ну а тут в чем проблема?

Ну типы разные.

Но суть-то та же :)

Sergey
06.04.2017
09:35:58
в serializable обьект должен уметь уснуть и проснуться

Google
Sergey
06.04.2017
09:36:10
а конвертировать себя в array, json, xml, yaml это ему нахер не нужно

Dinar
06.04.2017
09:36:14
А тут должен превратиться в массив и из него в объект

Sergey
06.04.2017
09:36:25
этим занимаются нормализаторы и гидраторы

Dinar
06.04.2017
09:36:37
Ну Трансформер может тогда сделать?

Pavel
06.04.2017
09:36:55
этим занимаются нормализаторы и гидраторы
Один хрен у симфони это все один компонент

Sergey
06.04.2017
09:37:55
Но репозиторий работает с сущностью. Передавать туда массив тупо
у тебя есть метод findById(), ты делаешь там запрос, тебе вернули массив и на выходе делаешь return $this->normalizer->denormalize($data, User::class); а методе save наоборот. save(User $user), там делаешь normalize и сохраняешь это как массив в базу

Один хрен у симфони это все один компонент
интерфейсы разные, а гидраторы это вообще не часть симфони. это доктрина

Pavel
06.04.2017
09:38:24
findById возвращает обьект

Sergey
06.04.2017
09:38:42
да, для того кто вызвал его

а внутри у тебя там мясорубка

Pavel
06.04.2017
09:40:09
Где вообще симфони юзает нормалайз и денормалайз? А то нет под рукой проекта

Sergey
06.04.2017
09:40:58
для сериализации обьектов в json в основном

Sergey
06.04.2017
09:41:12
normalize это промежуточное состояние между обьектом и json

Pavel
06.04.2017
09:42:01
Ну ведь если доктрина юзает пдо, то она получает из базы массив. Этот массив она денормализует абстрагированно от сущнсоти или репозитория, или где-то в родительских классах?

Dinar
06.04.2017
09:43:07
не абстрагированно.

Она гидрирует данные в сущность согласно аннотациям

Ну либо другому конфигу

Pavel
06.04.2017
09:44:02
Ну это понятно. Но где она это делает? На каком этапе?

Dinar
06.04.2017
09:44:18
Стектрейс посмотри. Я не интересовался. :)

Pavel
06.04.2017
09:44:22
Мне нужно щя понять делать сервисы или родительские классы для сущности и репозитория

Google
Dinar
06.04.2017
09:44:29
Там где hydrate происходит

Лучше оставить энтити плейн объектами

И создать например сервис-трансформер.

В нем преобразовывать туда обратно

Sergey
06.04.2017
09:46:55
Ну это понятно. Но где она это делает? На каком этапе?
есть EntityRepository, у которого ты вызываешь метод find, внутри у него вызывается персистер, который хреначит запрос к базе и потом результат прогоняет через гидратор, и дальше ты получаешь свою сущность

вот у тебя репозиторий будет выполнять роль персистера доктрины

с блекджеком

Dinar
06.04.2017
09:47:44
Так репозиторий не должен быть персистером

Он должен быть только файндером, так сказать :)

Sergey
06.04.2017
09:48:04
ему не нужна лишняя абстракция

Admin
ERROR: S client not available

Dinar
06.04.2017
09:48:21
Сделай трейт :)

Pavel
06.04.2017
09:48:25
Круто говоришь. Вот только я без доктрины

Sergey
06.04.2017
09:48:38
в доктрине персистер занимается не только сохранением

в чем проблема взять доктрину то?

чем изобретать свои велосипеды

Pavel
06.04.2017
09:49:24
тяжелая кудах ко-ко

Никто не даст разрешение

Давно бы уже сделал

Sergey
06.04.2017
09:50:10
т.е в конструктор запихнуть инициализацию сериалайзера это норм, а взять доктрину, которая оптимизирована это не норм

Google
Pavel
06.04.2017
09:50:21
Это лишь один из вариантов

Изначально сделал что контроллер и репозиторий всем этим занимался но из-за этого код выглядел ужасно

Сейчас норм но противоречит логике

К тому же юзается не симфони а сайлекс

Максимум что я могу пропихнуть это доктрин дбал абстракцию

Но она тут не особо спасет

Каждый разговор с тимлидом о доктрине закачивается тем что она весит АЖ 10 МЕГАБАЙТ

Roman
06.04.2017
09:53:58
боже

Sergey
06.04.2017
09:54:04
Омг

Приглашаем его в чатик

Roman
06.04.2017
09:55:09
ну, это можно понять, если он место на сервере экономит, например

Pavel
06.04.2017
09:55:45
Я канеш понимаю что тут апи на пару ресурсов но велосипедить из-за того что доктрина такая жирная это бред

Не, тут база на 100гб

Roman
06.04.2017
09:55:56
никакая она не жирная

Pavel
06.04.2017
09:55:59
Врятли он экономит

Roman
06.04.2017
09:56:00
это сказки

Pavel
06.04.2017
09:56:02
ДК я знаю

Его то я не смогу переубедить

Тут огромный проект на велосипедах и чистых запросах к базе

Нет бы доктрину подрубить и для новых задач юзать ее

Но нет. Давайте будем писать свою доктрину несколько лет

...

Страница 167 из 1418