Size: a a a

2021 March 18

k

knopkod4v in symfony
Павел Г.
Проще заэксклюдить директорию с кастомными нормалайзерами
а это сработает?
Я думал, что если будет интерфейс на классе, симфони поставит туда тэг всё равно
ну либо надо ещё автоконфигурацию вырубать
источник

ПГ

Павел Г. in symfony
knopkod4v
а это сработает?
Я думал, что если будет интерфейс на классе, симфони поставит туда тэг всё равно
ну либо надо ещё автоконфигурацию вырубать
Ну должно. В DI же не будет этих классов, а значит он и в сериалайзер их не запихает. Дело не в теге и не в интерфейсе, а в том что в DI контнейнере не будет их.
источник

k

knopkod4v in symfony
Павел Г.
Ну должно. В DI же не будет этих классов, а значит он и в сериалайзер их не запихает. Дело не в теге и не в интерфейсе, а в том что в DI контнейнере не будет их.
но если вообще их выпилить, то тогда сериалайзер не соберёшь уже
разве что через фабрику
источник

КГ

Константин Грачев... in symfony
У сериалайзера есть format и context. Как раз для того, чтобы на один "объект" писать разные нормалайзеры и не ловить сайд эффекты
источник

ПГ

Павел Г. in symfony
knopkod4v
но если вообще их выпилить, то тогда сериалайзер не соберёшь уже
разве что через фабрику
Я про базовый сериалайзер, вручную то можно будет собрать потом с этими катсомными
источник

ПГ

Павел Г. in symfony
Константин Грачев
У сериалайзера есть format и context. Как раз для того, чтобы на один "объект" писать разные нормалайзеры и не ловить сайд эффекты
Спс, надо будет посмотреть :)
источник

k

knopkod4v in symfony
Константин Грачев
У сериалайзера есть format и context. Как раз для того, чтобы на один "объект" писать разные нормалайзеры и не ловить сайд эффекты
это про группы?
источник

КГ

Константин Грачев... in symfony
knopkod4v
это про группы?
нет, в метод нормализ помимо объекта можно передать формат и контекст. Которые можно использовать для выбора подходящего нормалайзера. Или передать конфиг для одного из
источник

k

knopkod4v in symfony
Константин Грачев
нет, в метод нормализ помимо объекта можно передать формат и контекст. Которые можно использовать для выбора подходящего нормалайзера. Или передать конфиг для одного из
формат  - это вообще про разный формат объекта, а выбирать нормалайзер внутри метода normalize я себе плохо представляю
то есть это в каждом нормалайзере надо писать if ($context['some'] === 'x') чтобы по разному хендлить?
источник

КГ

Константин Грачев... in symfony
knopkod4v
формат  - это вообще про разный формат объекта, а выбирать нормалайзер внутри метода normalize я себе плохо представляю
то есть это в каждом нормалайзере надо писать if ($context['some'] === 'x') чтобы по разному хендлить?
> формат  - это вообще про разный формат объекта
С чего это вдруг?

Что мешает попросить нормализовать объект как array или как string передав 'array' или 'string' в format?
источник

КГ

Константин Грачев... in symfony
> то есть это в каждом нормалайзере надо писать if ($context['some'] === 'x') чтобы по разному хендлить?
Не в каждом, а где требуется
источник

k

knopkod4v in symfony
Константин Грачев
> формат  - это вообще про разный формат объекта
С чего это вдруг?

Что мешает попросить нормализовать объект как array или как string передав 'array' или 'string' в format?
так это и есть формат, не контекст. контекст тот же, форматы разные
источник

КГ

Константин Грачев... in symfony
knopkod4v
так это и есть формат, не контекст. контекст тот же, форматы разные
Формат приходит в метод supportsNormalization, можно под разные форматы (но один объект) написать разные нормалайзеры.
Контекст приходит в normalize метод, через контекст можно другие штуки передавать
источник

k

knopkod4v in symfony
Константин Грачев
> то есть это в каждом нормалайзере надо писать if ($context['some'] === 'x') чтобы по разному хендлить?
Не в каждом, а где требуется
тогда уже на втором нормалайзере будет повторение кода. При добавлении нового контекста нужно будет пройтись по всем нормалайзерам и поменять их все
В случае с отдельным сериалайзером нужно будет просто собрать отдельный сериалайзер
источник

КГ

Константин Грачев... in symfony
knopkod4v
тогда уже на втором нормалайзере будет повторение кода. При добавлении нового контекста нужно будет пройтись по всем нормалайзерам и поменять их все
В случае с отдельным сериалайзером нужно будет просто собрать отдельный сериалайзер
зачем? Ты что сделать пытаешься, я тебя не понимаю
источник

k

knopkod4v in symfony
Константин Грачев
зачем? Ты что сделать пытаешься, я тебя не понимаю
есть объект, его нужно по разному сериализовать, с использованием разных нормалайзеров для каждого контекста
источник

КГ

Константин Грачев... in symfony
Что такое "каждый контекст"?
источник

k

knopkod4v in symfony
Константин Грачев
Что такое "каждый контекст"?
например 1 контекст - на фронтенд, 2 контекст в  бд
источник

КГ

Константин Грачев... in symfony
knopkod4v
например 1 контекст - на фронтенд, 2 контекст в  бд
Контекст это массив параметров передающимся 3 аргументом в метод normalize, какой ещё фронтент и бд
источник

k

knopkod4v in symfony
Константин Грачев
Контекст это массив параметров передающимся 3 аргументом в метод normalize, какой ещё фронтент и бд
я не про этот контекст сериалайзера, а про контекст с точки зрения изменений. Если изменяется сериализация в бд - это не означает, что сериализация на фронт тоже должна поменяться
источник