
Sergey
02.12.2017
16:37:42

Vladislav
02.12.2017
16:37:43

Sergey
02.12.2017
16:37:50

Vladislav
02.12.2017
16:37:57
та ничего не конкурирует, решает только последнее изминение

Google

Антон
02.12.2017
16:38:03
@kopaygorodsky чувак да понятно. Мы не об этом

Sergey
02.12.2017
16:38:07
UoW - это граница твоей бизнес транзакции

Vladislav
02.12.2017
16:38:08
а о чем?

Sergey
02.12.2017
16:38:28
конкурентность - это когда у тебя одновременно могут быть более одной бизнес транзакции с участием одних и тех же данных

Антон
02.12.2017
16:38:37
@fes0r понял
http://design-pattern.ru/patterns/unit-of-work.html

Sergey
02.12.2017
16:39:17
UoW нужен просто для того что бы ты синхронизировал стэйт приложения и базы

Антон
02.12.2017
16:39:17
Я на эту доку опирался

Sergey
02.12.2017
16:39:35
хреновая дока
хотя как
есть нюанс
ты МОЖЕШЬ сделать свой UoW
который учитывает конкурентную запись

Google

Sergey
02.12.2017
16:39:57
например счетчик лайков
и вместод UPDATE posts SET likes=:likes сгенерит тебе UPDATE posts SET likes=likes+:likes
но это увы - свой кастомный UoW который учитывает то как у тебя данные меняются
доктрина имеет универсальный UoW. Что значит универсальный - это значит он тупой. Он тупо делает replace данных

Антон
02.12.2017
16:41:05
А у Фаулера что говорится?

Sergey
02.12.2017
16:41:37
https://martinfowler.com/eaaCatalog/unitOfWork.html

Антон
02.12.2017
16:41:42
Vladyslav да я о том что смысл говорит о flush. Об очевидном
Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems
Последние 4 слова о че

Sergey
02.12.2017
16:42:32
А у Фаулера что говорится?
я уже уточнил что в общем смысле, ты можешь учитывать конкурентный доступ и лочить например на уровне UoW. но это будет твой специализированный UoW под эту конкретную бизнес транзакцию.

Антон
02.12.2017
16:42:32
?

Sergey
02.12.2017
16:42:53
а не одна реализация UoW на все твои бизнес транзакции
доктрина - универсальная штука и она такие штуки разруливать не может.

Антон
02.12.2017
16:43:31
Да я понял что доктрина такие вещи не решает

Sergey
02.12.2017
16:43:46
но в общем смысле - да, можно UoW юзать для разруливания конфликтов
что бы изменения атомарно лепились в базу
в целом запилить свой UoW - не особо сложно.
но я готовых примитивов что бы это было удобно для php не видал)

Антон
02.12.2017
16:44:51
Доктрина нас учит использовать сеттеры, ты учишь что не надо. От этого диссонанс у меня

Sergey
02.12.2017
16:45:05

Google

Sergey
02.12.2017
16:45:23
а так если бы у всяких там Марко было время - они давто бы уже доку переписали
авторы доктрины во всех своих выступлениях особо акцентируют внимание что "сеттеры это не очень хорошо"
(хотя там только Марко и выступает конечно))

Антон
02.12.2017
16:46:40
http://www.doctrine-project.org/2011/11/21/a-doctrine-orm-odm-base-class.html
Да вот доку читаешь

Sergey
02.12.2017
16:47:01
> November 21, 2011, posted by Benjamin Eberlei
и это запись в блоге а не дока

Антон
02.12.2017
16:47:26
Я так и не понял как без сеттеров. Можешь в прям совсем для дурака? )
Через конструктор?

Sergey
02.12.2017
16:48:07

Антон
02.12.2017
16:48:18
new User('Anton') вместо setName()?
Понял

Sergey
02.12.2017
16:49:20
new User('Anton') вместо setName()?
если в твоем CRUD приложении надо изменить ВСЕ значения сущности или большую их часть - то есть смысл заменить "изменени" на "создание нового объекта". Пример - вместо setName и setBirthday сделать updateProfile(Profile $profile)

Sergey
02.12.2017
16:49:52
если ты накидаешь мне спорных примеров - могу накидать заметку как это все можно разрулить что бы выходило даже проще и удобнее

Антон
02.12.2017
16:50:18
А внутри этого метода уже по свойствам данные распихать?

Sergey
02.12.2017
16:50:34
все намного проще

Антон
02.12.2017
16:52:42
Но тут сразу вопрос как такой Embeddable класс заполнять? Сеттерами?
Почитаю в общем про это

Sergey
02.12.2017
16:53:50

Антон
02.12.2017
16:54:40
Понял. Очень много классов получается для обыкновенного crud

Google

Sergey
02.12.2017
16:57:53
зато можно убрать код изменения так как в целом у тебя нет разницы между изменением и создаеним
ну и объем кода будет даже меньше во многих ситуациях

Антон
02.12.2017
16:59:07
Попробую так сделать. Пока обычными сеттерами сделал )
Прикольно было бы мини проект с такими практиками увидеть

Sergey
02.12.2017
16:59:50
лень)

Антон
02.12.2017
16:59:52
Может есть такой?
Сколько я не смотрел, ничего подобного не видел

Sergey
02.12.2017
17:00:30
я вообще в опенсурсе мало годного видел с точки зрения архитектуры или кода

Антон
02.12.2017
17:01:10
Давай я буду писать что то такое простое, а ты надзирать

Admin
ERROR: S client not available

Антон
02.12.2017
17:01:54
За плечами только ларавел правда. Но уже не Битрикс )
Сделаю интернет магазин одного товара в учебных целях

Sergey
02.12.2017
17:03:10

Антон
02.12.2017
17:03:23
Ахаха

Sergey
02.12.2017
17:03:23
мне надо мини-убер написать, чисто апишку, оно может даже не работать.
а мне лень

Антон
02.12.2017
17:03:37
Ты про такси?

Sergey
02.12.2017
17:03:40
да

Антон
02.12.2017
17:03:54
Можно подумать

Google

Sergey
02.12.2017
17:03:59
пользователи, заказы, поездки... можно без поиска водителей, без геотрекинга

Антон
02.12.2017
17:04:10
Окей

Sergey
02.12.2017
17:04:21
ну то есть оно не должно быть "продакшен рэди". Если нужно что-то что достает расстояние и время поездки по координатам - лупишь сервис который рандом возвращает
и этого более чем хватит)

Vladislav
02.12.2017
17:04:46
Libretaxi

Sergey
02.12.2017
17:05:03
просто я на нем не "сеттеры" обкатывать собрался)
и потому надо на php
все строго опенсурс и все под MIT

Антон
02.12.2017
17:05:54
Ок. Начну на следующей неделе

Sergey
02.12.2017
17:06:04
можешь в личку пинать если вопросы будут
я пока статью попробую написать

Антон
02.12.2017
17:06:29
Хорошо. Спасибо

Arky
02.12.2017
17:20:59
@fes0r я запилил персист сервис, это норма?)

Sergey
02.12.2017
17:29:41
репозиторий в контексте доктрины - это как коллекция. Ну то есть с точки зрения кода который юзает репозиторий
с точки зрения самой сущности - ей класть что есть база данных какая-то. Она думает что она всегда есть с момента создания инстанса

Vit
02.12.2017
17:58:05

Sergey
02.12.2017
17:58:16

Arky
02.12.2017
17:58:57

Sergey
02.12.2017
17:59:23
блин мне кажется ты не с того конца взялся за все эти вещи