@oop_ru

Страница 272 из 785
Denis
28.06.2017
19:53:15
зачем лишний объект в этой цепочке?
Ну как бы json to dto занимаются в основном фрэймворки

Google
Aleh
28.06.2017
19:53:45
json в объект\хешмап делает фремйворк

ну а дальше че плодить слои

Артур Евгеньевич
28.06.2017
19:54:37
зачем гетер и сетер? что значит описать свойства? Что за crud сервис?
Про геттеры и сеттеры я помню твою позицию, но пока я её полностью не пойму, я не смогу её начать лобировать на совем проекте. Оисать свойство имею ввиду просто добавить его в объект(ну и в моем случае указать аннотации). Ну а под CRUD интересует операции создания и изменения, которые принимают дохера параметров

Denis
28.06.2017
19:54:44
У тебя модель берёт на себя лишнюю ответственность.

Чем чище модель - тем лучше.

Aleh
28.06.2017
19:55:17
что значит “чище”?

Артур Евгеньевич
28.06.2017
19:55:52
У тебя модель берёт на себя лишнюю ответственность.
сейчас в ней только свойства и сеттеры геттеры, конкретно в классе Entit 'ей

Evgeniy
28.06.2017
19:56:02
кароче давайте репу на гитхабе

Denis
28.06.2017
19:56:02
что значит “чище”?
Значит делает только работу, для которой она и была создана. Бизнес логика если это домен

Evgeniy
28.06.2017
19:56:09
и каждый свой трушный вариант напишет)

Google
Evgeniy
28.06.2017
19:56:16
и будем сраться в пулл реквестах)

Артур Евгеньевич
28.06.2017
19:56:57
Evgeniy
28.06.2017
19:56:57
лол развидеть это

Артур Евгеньевич
28.06.2017
19:57:35
Entity.fromArray(arrayFromJson)
а нет ниего плохого что массив в параметрах?

если аменить его на dto будет автодополнение

Evgeniy
28.06.2017
19:58:09
так как ты создашь dto ?)

Артур Евгеньевич
28.06.2017
19:58:13
+ когда в пыхе будет тайпхинтинг для полей, то еще плюшки будут

это мы с тетсировщиком придумал схему сегодня

Evgeniy
28.06.2017
19:58:28
foreach в контроллер

Sergey
28.06.2017
19:58:38
Бизнес)
ты слишком абстрактно вещаешь.

Evgeniy
28.06.2017
19:58:41
пока никак)
этот метод на выходе тебе даст сущность формы

Aleh
28.06.2017
19:58:52
а нет ниего плохого что массив в параметрах?
ну если у тебя есть какая-то валидация, которая гарантированно вернет структуры с правильными типами, то лучше дто

нет и нет

Evgeniy
28.06.2017
19:59:22
и ты без проблем уже имея весь автокомплит делаешь все остальное

Denis
28.06.2017
19:59:50
Google
Артур Евгеньевич
28.06.2017
20:00:03
вот есть массив с ебанутыми названиями элементов

Evgeniy
28.06.2017
20:00:17
не понял что в фориче делать
да про foreach сарказм

Артур Евгеньевич
28.06.2017
20:00:22
ахах

Evgeniy
28.06.2017
20:00:26
@mkusher имхо норм вариант говорит, я согласен

Артур Евгеньевич
28.06.2017
20:00:31
слава богу что я заподозрил что тчо то не так))

Sergey
28.06.2017
20:00:32
"как-то ниочем" я то?))
ну тип "модель это бизнес логика", "модель должна быть чистой", "бизнес решает"... я понимаю о чем ты, но это звучит как масло маслянное.

Артур Евгеньевич
28.06.2017
20:00:36
не такой уж я безнадежный

Evgeniy
28.06.2017
20:01:00
сделай сущность формы

Evgeniy
28.06.2017
20:01:22
там весь твой автокомплит и все знания за то что в форме

Sergey
28.06.2017
20:01:29
или не понимаешь
или не понимаю)

Evgeniy
28.06.2017
20:01:38
и сделай или метод статичный который вернет тебе эту сущность

или консттруктор пусть массив сразу приниммает

если сделаешь статичный метод то по сути фабричный метод сделал для сущности

Denis
28.06.2017
20:02:26
ну тип "модель это бизнес логика", "модель должна быть чистой", "бизнес решает"... я понимаю о чем ты, но это звучит как масло маслянное.
Ну раз понимаешь, зачем холивар разводить?) хочешь самоутвердиться - предложи самый оптимальный вариант а мы оценим :)

Evgeniy
28.06.2017
20:02:27
далее уже это сущность все делает

у нее будет метод getЧТОТебеНадо

Sergey
28.06.2017
20:03:43
Evgeniy
28.06.2017
20:03:46
и в контролере код будет примерно такой $result = CurseForm::fromArray($formArray)->getЧтоТебеНадо(зависимости если есть необходимость);

Google
Sergey
28.06.2017
20:04:30
до этого юзал подходы с DTO, пробовал и DTO->toEntity и entity::fromDTO, и то и то так себе

проблема с тем что у тебя как бы либо DTO должно пренадлежать к тому же слою (fromDTO), либо размазывается все на два слоя (toEntity)

билдеры же и фабрики для порождения сущностей удобно, в них легко запихнуть бизнес логику и легко ее тестить

Артур Евгеньевич
28.06.2017
20:06:46
из массива?

Evgeniy
28.06.2017
20:06:57
Sergey
28.06.2017
20:06:58
а формы - это уже сверху все.

Evgeniy
28.06.2017
20:07:01
возня с ним

ты его по сути замапил на сущность

у тебя уже сущность

Admin
ERROR: S client not available

Evgeniy
28.06.2017
20:07:28
готовая

логика того как замапить лежит в фабричном методе

Артур Евгеньевич
28.06.2017
20:07:46
билдеры же и фабрики для порождения сущностей удобно, в них легко запихнуть бизнес логику и легко ее тестить
еще был вариант создаватьфабрику с множеством конструкторов на каждый подбор параметров, и внутри уже билдером собирать

но его не одобрили

Evgeniy
28.06.2017
20:08:22
главное не делать over enginiring

лучше взять простой подход и если что потом его отрефакторить

чем пытаться предположить что понадобиться в дальнейшем

Артур Евгеньевич
28.06.2017
20:08:53
главное не делать over enginiring
сейчас его ка краз нет, просто набор параметров половина из которых не нужны кочует из формы в констуктор через 3 слоя

Google
Denis
28.06.2017
20:09:13
Тебе нужно из json (другое представление данных) создать сущность. Dto, в данном случае описывает данные полученные в запросе, и создаёт на их основе сущность. Билдер антипаттерн. Если нужен Билдер - значит уменьшай размер сущности/ разбивай её. В итоге dto в данном случае это таже фабрика.

Sergey
28.06.2017
20:09:56
сейчас его ка краз нет, просто набор параметров половина из которых не нужны кочует из формы в констуктор через 3 слоя
а три слоя не оверинженеринг? есть просто вероятность что твои три слоя достаточно изолированы весьма мала. И есть риск оказаться в ситуации когда у тебя проект это лазанья. Когда изменение на одном уровне требует "прорезать" все слои

Артур Евгеньевич
28.06.2017
20:10:28
давайте более предметно. Есть урок, у него обязательные два поля - учебный пан и время начала. И дохера всяких необязательных, но имеющих некоторую валидацию. Как бы вы организовали путь от массива до сущности с учетом разных наборов параметров.

Sergey
28.06.2017
20:11:05
Д - декомпозиция

группировать надо исходя из того для чего они нужны

и как используются

"то что используется вместе - ложим вместе, что используется отдельно - ложим отдельно"

Артур Евгеньевич
28.06.2017
20:12:31
а три слоя не оверинженеринг? есть просто вероятность что твои три слоя достаточно изолированы весьма мала. И есть риск оказаться в ситуации когда у тебя проект это лазанья. Когда изменение на одном уровне требует "прорезать" все слои
контролле принимает запрос, првоеряет права, конвертит джсон в аррэй , разбивает и вызывает серввис с пармаметрами. Сервис делает уже валидацию по бизнесс правилам, создает сущность и вызывает все сеттеры. То есть получается дтакой путь: джсон, аррай, набор параметров для сервиса, куча сеттеров из этих параметров

Артур Евгеньевич
28.06.2017
20:14:05
потому что контроллер я вижу как инфраструктурный слой

и на моя взгляд он не должен смотреть н атакое : если, задана время начало, то задать и время конца обязательно

Aleh
28.06.2017
20:14:28
такой себе аргумент)

Sergey
28.06.2017
20:14:39
а валидация входящих данных это прям бизнес логика? бизнес правила, правила валидации у тебя могут лежать в слое предметной области, но валидатор это такая же инфраструктура

далее у тебя бизнес логика должна предотвращать невалидные данные. То есть если с реквестом все хорошо - и дальше все должно быть хорошо. Дальше контроллера смысла юзать валидатор нет.

Артур Евгеньевич
28.06.2017
20:15:33
есть разная валидация. Одно дело проверить что поля не пустые, или что число это число, а не строка

хм

а поповоду вынести поля как valObject, там типо такие поля - is_hidden, is_deeted, payed_status, timezone, show_in_timetable, show_on_site и т.ж

то есть флаги в оснвоном

Страница 272 из 785