@prophp7

Страница 53 из 1387
Anton
01.11.2016
14:51:07
@fes0r тогда тайпхинтинга не будет, и от массива не сильно отличаться будет)

Sergey
01.11.2016
14:51:25
Anton именно по этому я юзаю массивчики

Aleh
01.11.2016
14:51:26
слишком жесткий оффтоп

Fayozjon [CybernatiC]
01.11.2016
14:51:33
?

Google
Fayozjon [CybernatiC]
01.11.2016
14:51:34
Сорян

Sergey
01.11.2016
14:52:22
Anton повторюсь. Предствь что у тебя за DTO отвечает сущность. И тебе запрещено редактировать этот код (буквально, сущность нельзя редактировать)

Anton и тебе надо добавить еще один вариант отображения данных а для этого в твоем DTO не хватает данных

и тебе надо уже новое но сделать его ты не можешь

Anton
01.11.2016
14:52:48
@fes0r ну кагбе завести пару лишних классов на каждую сущность/аггрегат, зато по царски - сразу увидишь, что в дто нужно новое поле добавить, или поменять формат

почему не можешь?)

Sergey
01.11.2016
14:53:05
Anton но тогда ж никакого разделения

Anton
01.11.2016
14:53:09
руки связали?

Sergey
01.11.2016
14:53:20
Anton да, связали. Просто запрещено менять код.

SRP и все дела связали тебе руки

Anton
01.11.2016
14:53:49
ну в ентити добавляешь новый метод, который отдает новое дто

Sergey
01.11.2016
14:54:14
Anton ты только что нарушил SRP, ты поправил класс сущности (бизнес объект) потому что тебе надо что-то по другому сделать на UI

теперь класс сущности имеет две разные (абсолютно) причины для внесения изменений

Google
Sergey
01.11.2016
14:54:37
нарушен принцип единой ответственности

в аду для таких есть отдельный котел

Anton
01.11.2016
14:55:41
при добавлении связи к сущности - тоже запрещено менять сущность? ну и не обязатльно для UI - я в данном контексте говорил про API бэкенд

Anton
01.11.2016
14:56:09
ну его может просить и другой апи, например)

Aleh
01.11.2016
14:56:16
без разницы кто его просит)

Sergey
01.11.2016
14:56:21
Anton ты серьезно не понимаешь что такое SRP?

https://www.youtube.com/watch?v=yIf3EQmHmyw

пожалуй самое простое и наглядное объяснение из всех что я видел

там же описываются причины почему это может быть полезным

Anton
01.11.2016
14:57:59
вечером видос гляну

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

но нормально вынести я не понимаю как

и идея открыать стэйт объекта другому объекту меня не радует еще больше

ибо в моем примере у класса появляются лишние методы, но они логически никак не скажутся на работе всего приложения а в случае с разделением стейта - будет полный пиздец и содомия

Aleh
01.11.2016
15:02:26
ну CQRS решает таки проблему

Anton
01.11.2016
15:02:57
ну CQRS для такого случая - это как с авианосца по воробьям)

ну и плюс моего подхода в том, что есть контракт, ну и ошибку я увижу до коммита, например

Sergey
01.11.2016
16:42:29
Anton вот кроме CQRS гарантированного решения проблемы как бы нет.

ну во всяком случае в PHP

Google
Sergey
01.11.2016
16:42:58
friend классы частично решили бы проблему целой минимальной связанности

Anton
01.11.2016
16:44:02
я может не верно понял, потому что когда читал о CQRS - понял, что это парадигма всего приложения, и если изначально ты ее не заложил, то потом не вкрячить

и она довольно усложняет все

Sergey
01.11.2016
16:45:19
Anton ну как... и да и нет. Все отличие будет в устранении автоинкрементов и подобной чуши

Anton а ReadModel можно и так и так вкрутить

Anton
01.11.2016
16:45:54
хм, тогда может и имеет смсл копнуть глубже

Sergey
01.11.2016
16:46:07
ну как, это оверхэд на самом деле

но не так что надо закладывать изначально

Anton
01.11.2016
16:46:41
не, тогда нет) само приложение и так дичайше сложное для меня

Sergey
01.11.2016
16:46:57
вот в сложных приложениях думать на тему CQRS имеет смысл)

Anton
01.11.2016
16:47:22
чтоб оно стало еще сложнее?))

Sergey
01.11.2016
16:47:59
CQRS понижает сложность

Sergey
01.11.2016
16:48:04
разделение операций записи и чтения

p.s. причем обработка команд не обязательно должна быть void

ну мол... в очень большом упрощении это всего лишь значит что ты пишешь в одну фигню а читаешь из другой. Например пишешь в ORM а читаешь из Gateway какого или DQL/SQL

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

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

вот это я называю "посторонней фигней"

Anton
01.11.2016
16:52:01
я пока в CQRS вообще не вдавался - не совсем понимаю всю идею

Sergey
01.11.2016
16:52:54
идея - писать в одну херню, читать из другой) это позволяет тебе делать между ними дикие архитектурные приклюхи

Google
Sergey
01.11.2016
16:53:14
например обновить нормализованные данные, построить денормализованные агрегации и читать уже из них

или делать event sourcing как крайность

когда тебе пипец важно не проебать вообще никаких данных

пишешь ивенты читаешь данные

Aleh
01.11.2016
17:11:51
тут все равно есть один геттер или что-то вроде геттера - ивенты ж из сущности по итогу вытянуть надо)

если мы про event sourcing

Admin
ERROR: S client not available

Aleh
01.11.2016
17:13:08
а если нет, то тогда все равно надо как-то вытягивать стейт, можно и рефлексией конечно и автогенерить сущности

Sergey
01.11.2016
18:19:34
> ивенты ж из сущности по итогу вытянуть надо) retriave не геттер

он меняет стэйт

это как array_pop

Aleh
01.11.2016
18:30:27
хотя, ивенты может и вообще не стейт модели

ну, ты в самом аггрегате никогда к списку ивентов не обращаешься же

твоя единственная там операция это сообщить о том, что что-то произошло

Sergey
01.11.2016
18:33:00
ну тип того

Aleh
01.11.2016
18:33:01
реакция на произошедшее происходит как-будто тебя кто-то извне пнул, типа псс чувак, тут ты вот это сделал, живи с этим дальше как хочешь

а кто пинает и кого пинать деталь реализации

там даже active record может быть))

recordThat(Event $event) { $event->save(); $this->notifyThat($event); }

Google
Aleh
01.11.2016
18:35:31
ну или как-то более красиво, не вмешивая ar в наши ивенты, но суть в общем-то не меняется

$dao = new EventDAO($event); $dao->save();

Sergey
01.11.2016
18:48:16
класс юзера на 700 строк(

Aleh
01.11.2016
20:34:24
https://habrahabr.ru/post/314114/ прикольно конечно

Sergey
01.11.2016
22:17:39
кто нибудь юзал blackfire в докере?

мне тут cli скриптик надо отпрофилировать и я туплю

не знаю как опубликовать пробу

что бы глянуть че почем

Sergey
01.11.2016
22:18:41
? запусти без докера

Sergey
01.11.2016
22:18:48
не выйдет

Sergey
01.11.2016
22:18:59
а в доках смарел?

Sergey
01.11.2016
22:18:59
окружение надо

Sergey
01.11.2016
22:19:00
https://blackfire.io/docs/integrations/docker

Sergey
01.11.2016
22:19:07
смотрел, там про http

Sergey
01.11.2016
22:19:13
а разница?

Sergey
01.11.2016
22:19:13
cli не хочет почему-то так дебажиться

сча еще гляну может с конфигами намудрил

а все, понял

401-ая ошибка

Страница 53 из 1387