@symfony_php

Страница 259 из 1418
Sergey
23.07.2017
11:50:40
и в целом UoW это делать реализации репозитория

Dmitry
23.07.2017
11:50:45
да, и при отсутствии persistance - тоже не нужна

Dmitry
23.07.2017
11:51:16
о том, что не понимаю, почему ты частный случай persistance берешь за модель

Google
Sergey
23.07.2017
11:51:23
.....

ясно, бесполезно

Dmitry
23.07.2017
11:51:52
ну да, бесполезно, потому что этот посыл у тебя - аксиома

Sergey
23.07.2017
11:52:01
какой смысл ты вкладываешь в слова "частный случай persistance берешь за модель".

модель чего?

модель persistance?

потому что это требуемая для меня модель работы persistance

Dmitry
23.07.2017
11:52:48
модель работы системы хранения

Sergey
23.07.2017
11:52:48
которая позволяет полностью отделить бизнес логику приложения от логики хранения

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

для этого я выбираю модель которая не имеет в принципе "системы хранения"

логично ж, нет?

или проблема в слове "модель"?

Google
Dmitry
23.07.2017
11:54:03
почему ты берешь "однопоточное неконкуретное nmemory хранилище" как модель работы системы хранения

uow не имеет отношения к системам хранения, она имеет отношения к бизнес-транзакции

почему в "идеальной системе" ты отказываешься от uow

Sergey
23.07.2017
11:54:55
почему ты берешь "однопоточное неконкуретное nmemory хранилище" как модель работы системы хранения
не системы хранения, а моего приложения. дабы при рассмотрении того как работает система и как я работаю со стэйтом убрать из головы такие понятия как "синхронизация данных", "разруливание конкурентного доступа" и т.д

почему в "идеальной системе" ты отказываешься от uow
потому что UoW это средство которое позволяет добиться "почти идеальной системы"

ну то есть сначала идея о том что тебе надо что-то что скроет синхронизацию, а UoW как реализация этой идеи

сначала мы придумали что хотим что-то что действует как inmemory repository и потом добились того что бы наши репозитории для работы с тем же постгресом работали так же с точки зрения клиентского кода

или ты думаешь сначала придумали UoW а потом "зачем"?

по поводу "однопоточного" - ну как бы оно так и работает. Вспомни как ты работаешь с инкрементами в базе

либо локи в базе на уровне репозитория, либо "надо молиться что бы небыло конкуретных запросов", но все это будет всеравно репозиторий скрывать или UoW

если у тебя UoW умеет отслеживать операции инкремента

то есть с точки зрения клиентского кода у тебя все будет выглядеть так как если бы все просто в памяти лежало. А flush - ну его можно заменить например на @transactional аннотацию на уровне контроллера

Dmitry
23.07.2017
11:59:14
я думаю, что когда придумывали uow, не держали в голове "сделать как будто у нас однопоточное" ;) а решали конкрентные проблемы построив реальную модель работы с субд

а ты почему-то хочешь приравнять совершенно две разные модели хранения данных

Sergey
23.07.2017
11:59:52
а ты думаешь о локах

ну вот я тебе пример привожу

вот у тебя есть сущность с балансом и ты добавляешь 5

типа +5 для Пети твоего и -5 для Васи

Google
Sergey
23.07.2017
12:00:42
как ты решаешь вопрос синхронизации?

писсиместичные локи в базе?

или как?

Dmitry
23.07.2017
12:00:53
разные, ибо inmemory - не persistance

Sergey
23.07.2017
12:01:03
забудь о СУБД

или выбери один вариант

мускуль или постгрес там

и забудь о UoW

у тебя просто PHP приложение которое обрабатывает тысячи запросов, некоторые паралельно, и тебе надо как-то не допустить неконсистентного состояния

что ты будешь делать?

лочить ряды в базе, так

?

Dmitry
23.07.2017
12:02:20
ага

Sergey
23.07.2017
12:02:33
в случае с immemory и многопоточностью ты точно так же будешь "лочить мьютексами/семафорами" проперти сущностей

так?

Dmitry
23.07.2017
12:02:51
ага

Sergey
23.07.2017
12:04:01
в этой ситуации у нас для immemory флаша не появляется так как это разруливается на уровне сущностей

а вот если мы захотим "вычистить" сущности от инфраструктурного булшита с синхронизацией стэйта

Dmitry
23.07.2017
12:04:49
как это не появляется, я буду в этом случае uow использовать ;)

Sergey
23.07.2017
12:05:31
как это не появляется, я буду в этом случае uow использовать ;)
это если ты сделал так что у тебя именно репозиторий выдает доступ к сущностям

Google
Dmitry
23.07.2017
12:05:51
а почему я должен сделать иначе?

Sergey
23.07.2017
12:05:53
потому что тебе для этого для каждого "потока" надо будет свой UoW которые будут лочить и релизить сущности

а почему я должен сделать иначе?
ну потому что можно сделать иначе)

в целом ладно, убедил

Dmitry
23.07.2017
12:06:25
только потому что inmemory быстрое

Sergey
23.07.2017
12:06:26
если с таким раскладом то да, везде будет UoW

но immemory repository поскольку прмиеняются только для тестирования - необходимости усложнять реализацию вводя UoW там нет

но в целом да, при таком раскладе Ivan мог бы получить одинаковые контракты

и для immemory и для обычных репозиториев

только потому что inmemory быстрое
их юзают для того что бы проверить что у тебя специфика работы с базой не просочилась в бизнес логику

Admin
ERROR: S client not available

Sergey
23.07.2017
12:09:08
UoW и flush это элементы инфраструктуры

есть примеры систем где весь стэйт лежит в памяти и там вообще не юзаются репозитории особо. Там по сути то что в памяти это проекции данных, а храняться только доменные ивенты (типа event sourcing).

вот там да - там упор на скорость

Dmitry
23.07.2017
12:14:42
мне кажется сравнивать хранение стейта в памяти и persist стейта в общем не совсем верно

Sergey
23.07.2017
12:25:35
мне кажется сравнивать хранение стейта в памяти и persist стейта в общем не совсем верно
идея как раз таки в том что бы максимально скрыть эту разницу

оно конечно на 100% не выйдет

Dmitry
23.07.2017
12:28:51
выйдет, если использовать uow, как бы ничто не мешает использовать uow для inmemory... а так получается, что мы выкинули для кастомного случая хранилища inmemory одну из абстракций - uow и удивляемся, что у нас стали контракты разные

Sergey
23.07.2017
12:37:54
ну на самом деле it depends. Если у тебя два тест кейса например будут изолированы - то контракты не будут различаться)

ну мол UoW это как раз таки то средство которое позволяет твоему репозиторию действовать как inmemory

Google
Sergey
23.07.2017
12:38:25
короч ладно, надо заканчивать

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

inmemory полезны только для демонстрации идеи которая приводит нас к UoW

vlad
23.07.2017
15:09:53
Ребят, доброго времени суток всем.

Помогите, пожалуйста, как правильно получить количество всех объектов из массива, который является полем сущности. И всё это нужно вызвать из репозитория.

Может есть у кого-нибудь набросок кода?

А-то в язык запросов могу совсем не очень :(

Valentin
23.07.2017
15:11:37
Вопрос не вполне ясен Кол-во объектов в массиве считается простым count($value)

Sergey
23.07.2017
15:24:59
ибо "поле сущности" может быть и тем и тем если так подумать.

а мы тут не телепаты

но и в том и в том случае - простой count

только первое для массивов, а второе метод коллекции

vlad
23.07.2017
15:28:26
извиняюсь за вопрос несколько раз была ситуация, когда без репозитория не обойтись было а потом, как раз в этом случае, просто count'ом голова уже не работает спасибо)

Ребят, можно ли в Process в symfony передавать парные комманды? т.е. $process = new Process('cd /var/www/***/ && php bin/console ***');

вроде того

Jan
24.07.2017
07:01:45
@fes0r а если я в сервис уровня приложения передаю некий репозиторий, то чтобы сделать flush, мне нужно дополнительно передать в него EntityManager, который используется этим репозиторием? Это к вопросу, где корректно делать flush.

vlad
24.07.2017
07:10:53
спасибо :)

why not

Boris
24.07.2017
09:30:55
Привет всем. Подскажите, есть ли в symfony шаблоны стартовые? Что-то типо basic, advanced в yii2? Спасибо.

Sergey
24.07.2017
09:32:29
шаблоны приложения?

Boris
24.07.2017
09:33:06
Да.

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