
Sergey
15.10.2017
22:50:56
https://www.slashdb.com
кто такие подходы юзает/знает?
что бы вместо "экономии на строчках кода" просто избавиться от своего бэкэнда? Если скажем прототип нужен или просто круд

Google

Sergey
15.10.2017
22:53:06
https://github.com/begriffs/postgrest

Dmitry
15.10.2017
22:56:02
я думал, что такой вид контроллера будет неплохим (когда лишние операции выносятся от глаз подальше, и тем более они дублируются)

Sergey
15.10.2017
23:00:46
у меня как-то разработчик тоже руководствовался такими вот благими целями, что бы мол "вместо 3-х строк в контроллере было 2".
это говно теперь невозможно поддерживать
все эти update в репозиториях (ну или базовый класс менеджер)
это как метастазы
но наслово мне лучше не верить, через такое лучше пройти. Хотя может тебя и пронесет

Dmitry
15.10.2017
23:04:20
у тебя опыта явно больше, это знаю)
то бишь лучше по старинке делать? например:
public function updateAction(Role $role, Role $updated)
{
$this->get('user.role.service')->update($role, $updated);
$em = $this->getDoctrine()->getManager();
$em->refresh($role);
$em->flush();
return $role;
}

Sergey
15.10.2017
23:04:42
getdirectus.com
на то что я предложу (подход с DTO) ты скажешь что тебе лень
ну и в любом случае да - лучше тогда уж в контроллере
update это никоем образом не задача репозитория

Google

Dmitry
15.10.2017
23:05:55
да нет, если это реально лучше - почему бы и нет)

Sergey
15.10.2017
23:06:01
+ refresh тебе зачем?
это скорее на будущее
getdirectus.com - вот еще интересный проект
надо б потыкать

Dmitry
15.10.2017
23:09:34
сейчас нулевой проект делаю, и вот хотел изначально сделать как можно лучше

Sergey
15.10.2017
23:11:11
я делаю так: - request -> dto (1:1 к запросу) -> валидация (можно даже сам запрос валидировать) -> прошу кого-нибудь что-нибудь сделать.
ну то есть никакой прямой десериализации в сущности
pros
- очень гибко
- легко подстраиваться под требования
- клиент получает нормальные ошибки валидации и в целом ui логика отделена от логики приложения
cons
- много очень тупого кода
- лень
- чем проще проект тем больше лень

Dmitry
15.10.2017
23:12:45
а потом в контроллере или сервисе:
$entity->setOne($dto->one);
$entity->setTwo($dto->two);
...
где-то так?

Sergey
15.10.2017
23:12:46
с экономической точки зрения разницы почти нет, да и если заморочаться можно кодогенерацию замутить

Dmitry
15.10.2017
23:20:27
в общем пошел читать инфу на эту тему, нужно разработать оптимальную архитектуру..

Sergey
15.10.2017
23:21:12

Dmitry
15.10.2017
23:21:47
это да) но можно сделать приблизительно к хорошей)

Sergey
15.10.2017
23:21:51
только постоянный анализ того что у тебя сейчас и что тебе надо сделать, ну и рефакторинг

Алексей
15.10.2017
23:32:18
сейчас нулевой проект делаю, и вот хотел изначально сделать как можно лучше
Ну, если проект твой лично - вперёд на эксперименты. Я каждый свой проектик мелкий когда пилю - что-то пробую из того, что не могу в проде на работе попробовать. Потому что подумать об этом - одно, а попробовать - другое. Никогда все нюансы и подводные камни не продумаешь. А сам споткнёшься когда - станет понятно где плюсы, а где минусы.

Dmitry
15.10.2017
23:34:08
Да, проект свой и не особо большой. Хочу сделать так, чтобы в дальнейшем было как можно меньше гемора в модификации кода

Dinar
16.10.2017
05:49:48

Google

Sergey
16.10.2017
06:15:04

Bohdan
16.10.2017
06:16:55

Sergey
16.10.2017
06:22:29
save хорошая штука если ты работаешь только с обьектом репоса и тебе нужно сохранить или вставить его обратно
плохо это то что не понимают что flush собирает абсолютно все с UoW и льет в базу, т.е не только обьекты из одного репоса могут принимать участие в этом всем

Bohdan
16.10.2017
06:33:13
это да
у меня так в некоторых местах от прошлой команды осталось
кстати, никто не использует какой-то подход с глобальным выполнением flush (имею ввиду, какой-то отдельный сервис/хендлер, который выполняет flush)?

Sergey
16.10.2017
06:33:43
не очень подход такой
некоторые в контроллере выполняют весь flush

Bohdan
16.10.2017
06:34:01
и так не оч, и иначе не оч
последним вызовом в контроллере - меньшее зло, когда логика в большей степени в контроллере живет
но у меня не живет

Sergey
16.10.2017
06:34:59
а еще бывает что нужно сделать несколько независимых транзакций
еще несколько разных em

Bohdan
16.10.2017
06:37:18
ну, это уже перечисление разных проблем)

Sergey
16.10.2017
06:37:51
а еще может быть нужна локальная обработка просранной транзакции, некоторые откатывать нужно, некоторые нет и тд
поэтому один большой flush далеко не всегда лучшая затея
оно работает на маленьких проектах
где у тебя надо сохранить какую-то статью и все

Bohdan
16.10.2017
06:38:53
на больших проектах имхо симфони оверхед
ну лично я бы под бложек/блогоподобное не брал бы симфу
хотя может с 4 версией это изменится

Google

Sergey
16.10.2017
06:39:22
на больших пхп проектах симфони это единственное спасение

Bohdan
16.10.2017
06:39:26
но бойлерплейта бывает слишком много

Sergey
16.10.2017
06:39:28
иначе они были б еще больше и еще страшнее
какой еще бойлерплейт на симфони?

Bohdan
16.10.2017
06:40:52
коллега на ларавеле пилит довольно крупный проект
не жалуется, хотя я так иногда заглядываю ему в код и немножко офигеваю от количества всего
описать роуты, описать сервисы, описать репозитории, сущности, миграции, и так далее

Dmitriy
16.10.2017
06:46:31
толи дело создал один файл и там все херачишь

Bohdan
16.10.2017
06:55:45
уел :)
никто не сталкивался с Unable to create a proxy for a final class в последнее время?
прод окружение, симфони 3.3, последняя доктрина

Admin
ERROR: S client not available

Алексей
16.10.2017
09:37:26

Bohdan
16.10.2017
09:37:35
не было
но похоже, нашел косяк

Алексей
16.10.2017
09:37:47

Bohdan
16.10.2017
09:37:55
а вот и нет :)
хотя я не спешу об этом говорить
по крайней мере, на 2.8 этого не было
ладно, обнова от 3 февраля
=\

Алексей
16.10.2017
09:40:46
https://github.com/doctrine/common/issues/813 ?

Bohdan
16.10.2017
09:40:58
ага, оно самое
спасибо, хоть почитаю

Google

Sergey
16.10.2017
10:30:33
привет, извинюсь за оффтоп, у нас тут никого нет из Ирландии?)

Sergey
16.10.2017
10:30:47
вряд ли
а что интересует то?

Sergey
16.10.2017
10:33:03

Sergey
16.10.2017
10:34:31

Taras
16.10.2017
10:42:53
Теперь английского хоть отбавляй.

Sergey
16.10.2017
10:43:29
Но ты ведь как-то говорил что персистенс должен быть в репах?
update это не персистенс, это операция над сущностью. В целом у тебя есть unit of work так что делать update в репозиториях не логично.
Другое дело что может понадобиться пакетная обработка - но тут тоже есть нюанс - называется он ISP. То есть можешь код в репу положить, но метод сам должен быть не в интерфесе репозитория.

Sergey
16.10.2017
10:44:07

Taras
16.10.2017
10:52:56
я кстати в ULearn хотел.

Sergey
16.10.2017
10:53:13
я год в бангкоке учился, безуспешно)

Sergey
16.10.2017
10:53:35

Sergey
16.10.2017
10:54:17
Почему?
основной целью была не школа, да и преподавание не оч было. хотя уровень поднялся за год сильно
планирую тоже либо в ирландию, либо в англию на месяц-два интенсивов и покататься по стране

Taras
16.10.2017
10:57:28
только рабочий колектив и атмосфера... поднимается уровень значительно шустрее.

Arky
16.10.2017
11:02:05
https://puu.sh/xZpOw/89cd12d94e.png
Как мне получить username?(

Andrew
16.10.2017
11:05:21
https://puu.sh/xZpOw/89cd12d94e.png
серьезно? а посмотреть в Comment метод, который возвращает юзера, а потом в классе User метод который возвращает username совсем не получается?

Arky
16.10.2017
11:07:49

Алексей
16.10.2017
11:11:58