@symfony_ru

Страница 58 из 138
Daniel
11.01.2017
10:13:55
Ща вспомнил, что какую-то вещь тут скидывали, где какая-то "методология" разработки применяется, где экшен контроллера - это отдельный класс, там как-то слишком умно называется, я не помню Можете кто нибудь подкинуть?

Т.е. на каждый запрос - отдельный класс

Вроде как

Ой, сколько у меня тавтологии...

Google
Алексей
11.01.2017
10:15:01
Да скорее всего как-нибудь и называется типа Action Class.

Daniel
11.01.2017
10:15:12
Не, там именно философия какая-то

Алексей
11.01.2017
10:16:02
Ну, то есть с Платоном и афинянами?

Daniel
11.01.2017
10:16:49
Я даж где-то читал, натыкался, что контроллером правильно называть метод класса, то бишь экшен

А не сам класс

Дмитрий
11.01.2017
11:44:01
подскажите как настроить подключение к двум базам на разных серверах

Алексей
11.01.2017
11:44:50
Документация же, не? https://symfony.com/doc/current/doctrine/multiple_entity_managers.html

Дмитрий
11.01.2017
11:46:56
пропустил этот раздел :( спасибо

Алексей
11.01.2017
11:47:36
Ну, если что, гугл спасает. Я туда написал "Symfony Doctrine multiple databases" и оно на первой строчке было :)

Опыт показывает, что если начать гуглить на английском, релевентность результатов вырастает в разы.

finkel
11.01.2017
12:59:04
Как думаете? есть ли смысл морочиться с разными методами в репозитории для разных степеней "заполненности" объекта?) Все тот же пример из моего блога, с авторами, их постами и заметками. В репозитории автора у меня есть метод getQuery, который собирает запрос с двумя джоинами, репозиторий авторов использует этот запрос для получения списка авторов и на выходе у меня сразу авторы с постами и заметками, без всяких ленивых загрузок. Но, наверно, мне не всегда будут нужны и посты и заметки. Это вообще проблема или я перезаморочился?)

Алексей
11.01.2017
13:01:49
Я думаю, что правильнее делать не методы, которые выбирают сущности с разной степенью гидрации коллекций, а целевые конкретные методы. Например, нужно получить пост с комментариям - делается метод "получить пост с комментариями". Ну, то есть, тут как с бесполезными сеттерами в сущности, пожалуй. Мне кажется, должны быть отдельные методы решающие свою задачу.

Timur
11.01.2017
13:02:50
Я тоже делаю так, как сказал комрад выше.

Google
Timur
11.01.2017
13:03:01
Вроде нормально выглядит (на мой вкус и моё ИМХО).

Алексей
11.01.2017
13:09:26
Да, наверное. Только тут надо аккуратнее с семантикой. В том числе помнить, что такое find, а что такое get. Ну и в целом да, получатся методы с разной степенью гидрации, но главное, как мне кажется, отталкиваться не от проблематики, а не от того, что "просто хочу несколько методов чтобы по-разному коллекции наполняли".

Алексей
11.01.2017
13:22:26
Кстати, по поводу работы с сущностями, доктрины и всего такого, у Окрамиуса есть хороший доклад, который я бы мог советовать послушать. https://www.youtube.com/watch?v=rzGeNYC3oz0 Его тут, скорее всего, уже кидали, но он от этого хуже не становится :)

Хэльго
11.01.2017
13:44:01
ну т.е. в репозитории методы типа getAuthorsWithComments getAuthorsWithNotes ...WithNotesAndComments
А я бы называл от того, для чего это используется, используя смысловое наполнение того, где это используется.

Алексей
11.01.2017
13:48:40
Я, в общем-то о таком и говорил. О контексте. Хотя местами у меня тоже бывает getPostWithComments() когда это наиболее логично звучит в данной ситуации.

finkel
11.01.2017
14:11:15
Daniel
11.01.2017
14:19:17
Кто нибудь пользовался LexikFormFilterBundle?

Sergey
11.01.2017
16:11:34
методы репозиториев либо добавляют сущность на хранение, либо удаляют, либо возвращают одну и ровно одну сущность (или кидают исключение)

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

а методы вроде getAuthorsWithComments лучше выносить в отдельные классы

которые не умеют persist и которые делают тупые read-only выборки

и тогда жизнь будет чуть меньшей болью

finkel
11.01.2017
17:02:25
ааа кажись понял

но лучше будет если пояснишь))

У меня получилось как то так AuthorRepository +getAuthorsWithPostsQuery():qb +getAuthorsQuery():qb AuthorManager +getAuthorsWithPosts():Author[] +createAuthor():Author +update($author) // тут работаем с базой

все как на той картинке

Google
finkel
11.01.2017
17:53:56
блин, надо себе футболку с таким принтом заказать

Sergey
11.01.2017
18:07:00
но лучше будет если пояснишь))
Поясняю. Тебе этот список нужен в рамках бизнес логики или на UI показать?

Sergey
11.01.2017
18:10:29
ну значит делаем отдельный сервис который такими вещами занимается

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

тогда и пачки геттеров из сущностей уйдут

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

воимя SRP

finkel
11.01.2017
18:19:26
хотя это если ты реально будешь загоняться, так что достаточно просто вынести выборки которые ты делаешь только для UI в отдельный сервис
а в чем соль? ну вот мне надо где-то вывести список авторов с их постами, а потом надо будет этот список получить для бизнес логики и что? мне уже не подойдет мой сервис который делает выборки только для UI. Звучит странно, наверно я что-то не понял

Sergey
11.01.2017
18:21:38
> а потом надо будет этот список получить для бизнес логики для бизнес логики все данные должны лежать в пределах агрегата (и там должен быть корень через который ты операцию проводишь)

если у тебя какие-то правила выборки есть определенные - формируешь объект-критерию для коллекции.

finkel
11.01.2017
18:34:58
спасибо, подумаю над этим

Sergey
11.01.2017
18:39:10
я вот пытался вспомнить хоть один случай когда у меня дублировались правила выборок для логики и для UI

и не смог придумать

если кто может накинуть таких буду рад

finkel
11.01.2017
19:28:45
когда-нибудь я тоже научусь так говорить
я думал я один плохо понял Сергея

da horsie
11.01.2017
19:29:11
гм

"плохо" подразумевает "хоть как-то"

явно не мой случай

Google
da horsie
11.01.2017
19:36:18
впрочем, я кажется знаю слова "для" и "который"

Ринат
11.01.2017
19:50:54
Странно, чатик на мобилке не подгружается.

Ivan
11.01.2017
21:06:48
вот где-где, а на пикабу я такого точно не ожидал)) http://pikabu.ru/story/doctrine_best_practices__1_4327349

Хэльго
11.01.2017
22:11:51
таким методам не место в репозитории
Вероятно, я на SF не пишу уже достаточно долго, могу говорить ерунду :)

Алексей
11.01.2017
22:33:25
вот где-где, а на пикабу я такого точно не ожидал)) http://pikabu.ru/story/doctrine_best_practices__1_4327349
Это краткая выжимка того доклада, что я выше кидал. Причём, менее понятная, чем сам доклад.

Ivan
11.01.2017
22:33:57
ну да, то что было на видео

Admin
ERROR: S client not available

Ivan
11.01.2017
22:34:28
просто место размещение неожиданное:)

da horsie
11.01.2017
22:34:41
чуваки

Алексей
11.01.2017
22:34:45
Это да.

da horsie
11.01.2017
22:34:52
а поясните мне за композер

вот у меня в проекте мы коммитим vendor в репу, прям всю папку в гит

Ivan
11.01.2017
22:35:42
зря наверное)

da horsie
11.01.2017
22:35:44
я так понимаю, что это неправильно

но

Ivan
11.01.2017
22:35:54
правильно понимаешь)

da horsie
11.01.2017
22:36:22
что мне ответить боссу, когда он спросит, а как мол быть, если пакагист лег, а нам надо деплоить?

Алексей
11.01.2017
22:36:25
Коммитить надо composer.json и composer.lock.

Ivan
11.01.2017
22:37:02
ну локально ж вендор есть

Google
da horsie
11.01.2017
22:37:09
где локально?

Алексей
11.01.2017
22:37:11
что мне ответить боссу, когда он спросит, а как мол быть, если пакагист лег, а нам надо деплоить?
Можете держать свой сервер-прокси для packagist. Есть как Standalone так и saas.

da horsie
11.01.2017
22:37:54
Можете держать свой сервер-прокси для packagist. Есть как Standalone так и saas.
ага, отлично, теперь он скажет - нахер мне платить за еще один сервер? и девопсы тоже меня не поймут, когда я к ним приду и говна накину

Ivan
11.01.2017
22:38:35
где локально?
на машинах, на которых ведется разработка

da horsie
11.01.2017
22:38:54
на машинах, на которых ведется разработка
хорошо, а как быть с дженкинсами и продом?

и стейджем

и остальными

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

меня будут иметь всем отделом

потому что я сломал CI

своим предложением

Алексей
11.01.2017
22:40:28
Поднимите satis.

https://code.tutsplus.com/tutorials/setting-up-a-local-mirror-for-composer-packages-with-satis--net-36726

da horsie
11.01.2017
22:40:46
Поднимите satis.
вопрос выше - как обосновать девопсам и бухгалтеру

Алексей
11.01.2017
22:41:05
Ну впихни его к дженкинсу.

Sergey
11.01.2017
22:41:11
da horsie
11.01.2017
22:41:15
все тот же вопрос

какую выгоду получит бизнес?

Страница 58 из 138