
Dinar
28.06.2017
07:04:50

Sergey
28.06.2017
07:06:24
в формах вроде как рекомендуют в data_class ложить не сущность, а dto, либо же в симфе есть трансформер из формы в сущность и обратно

Dinar
28.06.2017
07:14:46
А чем сущность отличается от ДТО?

Sergey
28.06.2017
07:17:13
А это разве не Controller as a service?
он самый, только продвинутая версия. изначально было когда регаешь контроллер как сервис, то прощаешься со всеми плюшками типа $this->render, а теперь сделали более хитрый способ

Google

Sergey
28.06.2017
07:17:51
https://stovepipe.systems/post/avoiding-entities-in-forms по поводу форм и сущностей

Dinar
28.06.2017
07:19:53
Но вообще там комменты весьма разные :)
Но я так понял, этот способ не отменяет стандартный метод.

Sergey
28.06.2017
07:51:02
стандартный метод уже немного устарел
https://github.com/symfony/symfony-standard/blob/3.3/src/AppBundle/Controller/DefaultController.php тут уже AbstractController идет к примеру
https://github.com/symfony/symfony-standard/blob/3.3/app/config/services.yml#L27 и вот регают контроллеры

Dinar
28.06.2017
07:53:02
ну мне кажется и у того и другого способа есть и плюсы и минусы.

Sergey
28.06.2017
07:58:49
у привычного способа слишком много минусов

Ivan
28.06.2017
08:01:31
я на каждый интеграционный тест, использующий БД, гружу фикстурки. Сейчас подумал, а можно ли запускать тест в транзакции и откатывать её после теста? это нормально?

Sergey
28.06.2017
08:02:00
да, на эту тему докладов и статей много было

Dinar
28.06.2017
08:27:57
Многие так делают.

Jan
28.06.2017
08:29:36
@Enleur спасибо, как раз хотел найти эту статью) пора в закладки положить.

Google

Jan
28.06.2017
08:30:08
@Gaaarfild DTO — это просто структура данных. Без логики.

Dinar
28.06.2017
08:30:25
Как и сущность должна быть такой же
В правильной сущности не должно быть логики
Единственное, чем она может отличаться - аннотациями для доктрины. Но без доктрины аннотации - просто комментарии.
И это просто ДТО.

Ivan
28.06.2017
08:31:40

Dinar
28.06.2017
08:31:59
Я не прав? :)

Sergey
28.06.2017
08:34:27

Dinar
28.06.2017
08:35:08
Ну максимум логика может бысть связана только со своими данными.
И тогда это наверно уже не сущность а модель.
Простейшам логика типа isActive там или еще че нить.

Sergey
28.06.2017
08:45:40
логика должна быть, но логика поведения самого объекта

Dinar
28.06.2017
09:16:18
Понятно. А где можно прочитать про это?

Sergey
28.06.2017
09:19:45
https://github.com/symfony/symfony/pull/23315 неужели

Andrew
28.06.2017
10:28:14

Oleksandr
28.06.2017
10:30:23

Pavel
28.06.2017
10:32:03

Andrew
28.06.2017
10:32:43
а еще есть codeception :)
есть, но если у тебя тесты в behat/codeception гоняются через вебсервер, то ролбэк сделать не получится.
если использовать kernel driver, то можно переиспользовать StaticDriver, который в этом бандле есть

Google

Oleksandr
28.06.2017
10:34:51
так через кодсепшн можно ж и юнит писать

Andrew
28.06.2017
10:36:08
как и бд

Ivan
28.06.2017
10:39:43

Pavel
28.06.2017
11:27:46
Всем привет, проблема с JMSSerializer. Пытаюсь сериализовать массив обьектов Group. У обьекта Group есть свойство типа Course. Файл Entity.Group.yml примерно такой:
AppBundle\Entity\Group:
exclusion_policy: ALL
properties:
id:
expose: true
groups: [default]
description:
expose: true
groups: [default]
course:
type: AppBundle\Entity\Course
expose: true
groups: [default]
Есть также файлик Entity.Cource.yml, там expose для примитывных типов.
На выходе чтото топо того (поле course сериализовалось как пустой объект):
[{
"id": 1,
"description": "test",
"course": {}
},...]
Кто-то сталкивался с подобным?
UPD: Отдельно объект Cource нормально сериализует.


Dinar
28.06.2017
12:01:06
А есть ли тут немного фронтедные опытные чуваки? :)
Подскажите, почему Бабель косячит. Если в функции где-то аргументом встречается null, то он дальше этот файл не обрабатывает, а подключает следующий. Из-за этого естественно ошибка на странице.
Код транспайленный выглядит вот так
swal(Translator.trans('package_modal_error'), "use strict";
Хотя должен был вот так
swal(Translator.trans('package_modal_error'), null, 'error');
use strict это уже начало другого файла
Если заменяю null на пустую строку, то нормально идет.

Aleh
28.06.2017
14:34:09
эм
вряд ли это бабель виноват

Dinar
28.06.2017
14:42:34
нашел проблему.
Это генерация соурс мапа из вывода бабеля, но до аглифая.

Dinar
28.06.2017
14:42:57
Сейчас сделал ее до бабеля, и заработало
Как лучше всего тестировать логику, которая стучится в АПИ и данные оттуда достаёт и записывает в БД. А другой роут отображает в нужном формате.

Daniel
28.06.2017
16:54:10
А почему не делать через моки вызовы в апи и эмулировать тот или иной ответ, проверяя поведение приложения на любой вариант этого ответа?

Sergey
28.06.2017
16:54:48

Dinar
28.06.2017
16:55:17
Ну вот как их тестировать?

Sergey
28.06.2017
16:55:19
та что собирает инфу там апиха мокается и отдаешь статические ответы, сверяя только то что собираешься писать в базу. можно прям интеграционными покрывать сразу, если вариаций ответов не много

Dinar
28.06.2017
16:55:42
Чтобы он при этом и сломался, если апи поменяется. Каждый раз дергать?

Sergey
28.06.2017
16:56:01
ну ты тестируешь не их апи же, а свой код

Google

Sergey
28.06.2017
16:56:14
если тебе нужно детектить то что у них апи сломалось это уже отдельная тема

Dinar
28.06.2017
16:56:31
Но мой код должен мне подсказать же, если он больше не может с их апихой работать?
Это же мне фиксить придётся.

Daniel
28.06.2017
16:56:57
Вроде как нет как раз, это херовая апиха, если обратная совместимость ломается
Дожен быть префикс версии на крайний случай тама

Dinar
28.06.2017
16:57:08
Ну по сути - да.
Ну а если она херовая? :)))
Вот мучаюсь выбором. :)

Admin
ERROR: S client not available

Dinar
28.06.2017
16:57:44
И ещё если обращения к апихе дорогие.
То есть часто делать - не айс.

Daniel
28.06.2017
16:59:04
А какой смысл в тесте это делать?
Тесты допустим срабатывают на сборке билда, чтобы на прод не выгрузилось говно
Если апи отваливается и тест проверяет её наживую, конечно он тебе скажет, что все херово, но как тебя это спасет?
Сломалось чужое апи - сломался и продакшн билд

Dinar
28.06.2017
16:59:10
Может кешировать в моки?
Тоже верно.
Но прод может продолжать работать, так как сломался только пишущая логика.
В общем, я в целом понял.
Спасибо. :)

Daniel
28.06.2017
17:08:20
А вот кстати SOA, я не знаю всех минусов и сложностей
Но недавно смотрел опыт работы с ним в hh
Дошел до хорошего плюса - отказоустойчивость, т.е. например фронт стучит куда-то и если тот или иной сервис не отвечает, не весь сайт ломается, а только лишь раздел
Как бы офигенный плюс, пускай и дорогой в итоге
Потом очень просто отдать тот или иной функционал на аутсорсинг

Google

Daniel
28.06.2017
17:11:54
SOA как панацея ненене, но все равно интересная же тема достаточно

Sergey
28.06.2017
17:24:41
даже без соа как часто у тебя ломается весь сайт из-за ошибки в каком-то из модулей?

Sergey
28.06.2017
17:58:54
подскажите плиз, используете ли наследование в доктрине? у меня есть скидки разных типов, нормально ли будет на уровне доктрины их по типу разделить или нет?

Daniel
28.06.2017
18:27:03

Sergey
28.06.2017
18:40:52
да

Ruslan
28.06.2017
19:14:00
Сергей, используем. Проблем нет, по крайней мере с Single Table.
К недостаткам можно отнести то, что структура таблицы становится менее очевидной.

Daniel
28.06.2017
19:15:45
А насколько это важно кстати?

Ruslan
28.06.2017
19:20:56
Зависит от обстоятельств, но в моей практике два-три nullable поля допускаю
Если таких полей больше или есть кто-то, кто работает с базой напрямую, в обход ORM, то может вызвать проблемы.

Daniel
28.06.2017
19:26:49
Кто-то еще напрямую с базой работает?!
Ну это херовый подход был бы

Ruslan
28.06.2017
19:54:00
Работают некоторые. В devzen ведущий рассказывал, что ему мешаются все эти ORM, проще и быстрее сразу SQL написать.
Перечитал, не совсем ясно выразился: можно и в рамках ORM на грабли наступить с неправильной схемой, если конструировать там сложные запросы, выходя за рамки стандартного persist/findBy/flush. И чем больше полей и чем менее очевидна схема, тем проще это сделать.

Daniel
28.06.2017
20:07:16
Кстати, RSM не будет разруливать DiscriminatorMap?

Dinar
29.06.2017
07:30:14
Ну и да, огромный плюс, что очень четко могут раздельно работать фронт и бэк разрабы, не мешая и почти не тормозя друг друга :)

Sergey
29.06.2017
08:18:26

Daniel
29.06.2017
08:19:18
А плюсы есть?