
Andrey
18.03.2018
15:03:55
Ты тоже используешь DoctrineExtension?

Greabock
18.03.2018
15:04:51
Сейчас попробую отключить timestampable. Он у меня всего в одной модели используется. Так что...

Sergey
18.03.2018
15:05:10
Минута делов
мне как-то достался проект где вот этого минутного дела набиралось на 80 лишних запросов) и только половина потому что "кто-то любит миграции руками писать". Остальное - какие-то баги вызванные кривым обновлением dbal

Google

Greabock
18.03.2018
15:06:31
На тот момент, мне казалось, что я часто буду юзать его. И кинул до кучи, когда экстеншены выбирал. А потом забыл... ну или забил..

Andrey
18.03.2018
15:08:30
Я скажу так что ранее юзал GEDMO, сейчая KnpLabs/DoctrineBehaviors и все равно эта фигня появляется

Greabock
18.03.2018
15:09:04
Нет, проблема не в этом
хм... зато по пути поотключал еще пару бесполезных расширений )

Andrey
18.03.2018
15:11:33
Нет, проблема не в этом
Может быть, не разбирался, особо не напрягает так сильно что бы фиксить. Но помоему начинает эта хрень появляется именно после начала использования Doctrine extension. Хз может ошибаюсь. Я уж привык уже к автообновляемым полям и к проблемке хотя больше нуждался в translatable trait из вышеуказанного пакета.

Greabock
18.03.2018
15:15:39
Всем спасибо за сочувствие )
Пойду крыть матом окрамиуса и его прихвостней )

Maks
18.03.2018
16:01:39

Dinar
18.03.2018
16:02:34
Это не костыль а именно способ для этого.

Maks
18.03.2018
16:06:56
Ну даже не знаю, что скзаать. Где-то в ишьюас на гитхабе вроде видел, что просили добавить поддержку такого, но ответ разрабточиков был прост " делайте import(./images/image.png) в вашем main.js"

Dinar
18.03.2018
16:08:38
Вот это похоже на костыль. :))

Maks
18.03.2018
16:08:56
Да)
Поддержку вебпака 4 тоже не обещают. Ищут людей кто возьмется запилить поддержку вебпака 2/3/4 одновременно
А вообще энкор этот просто дает на выходе минимальный конфиг для вебпака. Так что у себя просто написал его свой и юзаю вебпак 4

Google

Alan
18.03.2018
16:15:28
ну импортить норм если ты картинку в компоненте юзаешь, ты ж цсс там тоже импортишь)
а если картинка в цсс то на этапе сборки ее надо в билд сложить с CopyWebpackPlugin да
ты ж при сборке scss тоже складываешь ток там копирования недостаточно надо еще препроцессоры запустить
может ты не хочешь чтоб твои картинки из цсс складывались как файлики в билд а инжектились как base64
модульно же все норм)

Sergey
18.03.2018
16:28:14
по поводу геттеров/сеттеров в доктрине:
http://doctrine-orm.readthedocs.io/en/latest/tutorials/getting-started.html
немного обновили доку что бы чуть соответстовало best practice (текст, не код)

Елнур
18.03.2018
16:39:16

f4rt~
18.03.2018
16:40:04
интересно единый язык в сущностях, считается за сеттеры ?)

Sergey
18.03.2018
16:43:13
поясни мысль

f4rt~
18.03.2018
16:43:32
я про семантику и Ubiquitous Language

Sergey
18.03.2018
16:43:41
а причем тут сеттеры?
единый язык как раз таки должен подстегивать тебя к нормальному моделированию)
и да, это сложно)
@thatside вот еще видяшки на тему SOA - думаю будет интересно http://udidahan.com/2015/02/02/finding-service-boundaries-illustrated-in-healthcare/

f4rt~
18.03.2018
16:45:10
Ticket.assign(User)
ticket.setUser(User)

Konstantin
18.03.2018
16:47:58
в таком виде сеттеры больше похожи на конвенцию

f4rt~
18.03.2018
16:48:21
если я не могу всем и вся рулить в конструкторе сущности, тобишь вот у меня сейчас на руках есть конкретная ситуация, есть легаси проект, увы не с нуля, который мы своими силами пытаемся причесать и сделать лучше, нежели было до нас с каждым днем, переходить полностью на ddd трудно, получается гибкость ценной сложности, и у нас некое промежуточное решение, есть VO,есть ActiveQuery, максимально все приближенно к языку бизнеса, без явных сеттеров(Set) семантики

Konstantin
18.03.2018
16:48:27
типа "давай будем приписывать к параметру глагол set- и тогда будет понятно какие свойства объекта можно изменить"

Google

Konstantin
18.03.2018
16:49:05
то что кто то ратует за смену конвенции на "давай лучше просто будем называть по разному установку разных свойств чтобы никто не догадался" - ну, флаг в руки)

f4rt~
18.03.2018
16:49:18
если я не могу всем и вся рулить в конструкторе сущности, тобишь вот у меня сейчас на руках есть конкретная ситуация, есть легаси проект, увы не с нуля, который мы своими силами пытаемся причесать и сделать лучше, нежели было до нас с каждым днем, переходить полностью на ddd трудно, получается гибкость ценной сложности, и у нас некое промежуточное решение, есть VO,есть ActiveQuery, максимально все приближенно к языку бизнеса, без явных сеттеров(Set) семантики
типо явный профит отсюда, когда заводится таск сделать то и то, можно буквально ctrl+f поиск по проекту сделать и найти нужное место, которе следует поменять

Sergey
18.03.2018
16:49:47

Alan
18.03.2018
16:50:06

f4rt~
18.03.2018
16:50:09

Sergey
18.03.2018
16:50:11
а assign это просто метод, не сеттер. У этого метода есть семантика и все такое

f4rt~
18.03.2018
16:50:28
второй — тот, от которого мы ушли, мы попадаем под doctrine without setters ?)
или исключительно через конструтор :)

Konstantin
18.03.2018
16:51:29

Sergey
18.03.2018
16:51:34

f4rt~
18.03.2018
16:52:37

Konstantin
18.03.2018
16:52:44
о черт зачем спросил )

Alan
18.03.2018
16:52:48

f4rt~
18.03.2018
16:52:54
и описал профиты, которые как мы кажется, заимели с этого

Sergey
18.03.2018
16:52:54
короч вся проблема в том что под сеттером понимается либо любой метод который называется setSomething или который в теле содержит $this->something = $something;
хотя это не так
сеттер это конвенция, эксоссор данных, то есть мутатор который явно говорит тебе "когда видишь setStatus то оно поменяет поле статуса у меня внутри
и проблем с этой конвенцией нет никаких

Google

Sergey
18.03.2018
16:55:11
ровно до тех пор пока у тебя для выполнения бизнес операции надо сделать ровно один вызов
если вся бизнес транзакция подразумевает вызов setName - мы просто говорим о херово названном методе, не передащем семантику и единый язык, не более. Если для операции надо вызвать пяток сеттеров - мы говорим о высокой связанности.
если тебе бизнес говорит "we want to rename product" то у сущности Product должен быть метод rename.

Alan
18.03.2018
16:57:25
мне кажется иногда цепляются именно к названию) можно и апдейтеров наделать )) но суть не в конвенции и названии

Sergey
18.03.2018
16:58:06
ну то есть есть два аспекта:
- сеттеры как пример херово названных методов в большинстве случаев
- сеттеры как простой способ увеличения связанности и снижения cohesion модуля

Sergey
18.03.2018
16:58:49
changePrice тоже самое что и setPrice

Admin
ERROR: S client not available

Sergey
18.03.2018
16:59:17
и если для этой операции тебе надо вызвать только один метод - не вопрос)
2 метода у одного и того же объекта да еще и в определенном порядке - уже можно насторожиться. 5 методов - явно что-то не так

f4rt~
18.03.2018
17:00:59

Sergey
18.03.2018
17:01:01

Konstantin
18.03.2018
17:01:16
так операция бывает либо над объектом либо сам объект что то над собой делает. в этом все дело?

Alan
18.03.2018
17:01:38
если на дешевые не предусмотрен скидос

Konstantin
18.03.2018
17:01:52
т.е. "не хотим делать 5 вызовов над объектом, лучше создать 1 отдельный метод который вызовет 5 раз что то там внутри" я так понял что сюда надо клониться?

Sergey
18.03.2018
17:02:01

Konstantin
18.03.2018
17:02:24
т.е. сделаем 1 метод на 5 параметров

Google

Sergey
18.03.2018
17:02:25

Greabock
18.03.2018
17:02:29
@fes0r, к сожалению, лодка этой прекрасной семантической модели вдребезги разбивается о скалы реального кода и реальных потребностей. Например, у меня есть гидратор, который строит дерево моделей из прилетевшего через graphql json. Казалось бы тут самое место анемичным моделям. Но нет, у меня достаточно логики скрытой за сеттерами. И ничего, живу. Думаю вот выложить гидратор пакетом... очень удобный получился.

Sergey
18.03.2018
17:03:36
т.е. сделаем 1 метод на 5 параметров
да, начнем с этого. Затем вспомним завет дяди боба что неприлично методу иметь более 3-х аргументов (в идеале вообще без аргументов, этому к слову есть опять же обоснование с точки зрения связанности).

Konstantin
18.03.2018
17:03:36
мне так кажется в итоге
приходим к тому чтобы сделать n*2 разных методов для разных комбинаций свойств
вместо просто n сеттеров по отдельности

Sergey
18.03.2018
17:04:16

Konstantin
18.03.2018
17:04:36
а то null передавать в метод так то тоже не семантика )

Sergey
18.03.2018
17:05:00

Konstantin
18.03.2018
17:05:21
т.е. раздувать код промежуточными объектами

Alan
18.03.2018
17:05:28
разные методы скорее всего там

Sergey
18.03.2018
17:05:39
ты просто не учитываешь количество кода всяких там сервисов-менеджеров которые мутируют сущности
ну и еще - там куча других вопросов всплывают, как дробить на сущности, как выделять границы.... и это нихера не простые вопросы)
именно по этой причине большинство не загоняются и лепят анемичные модели) не потому что "так правильно" а потому что это зона комфорта.... не надо думать... все просто и понятно
подумаешь что это просто процедурное программирование + чуть чуть изоляции стэйта...


Konstantin
18.03.2018
17:07:47
о блин приклеилось новое слово )

Sergey
18.03.2018
17:10:38