Size: a a a

2021 March 18

ПГ

Павел Г. in symfony
Arseni
Понятно, спасибо!)
источник

AF

Alexei Fedorov in symfony
Ребят, херперы, кастомные нормалайзеры, серелайзеры (классы которые могут использоваться в Контроллерах) в какой директиве лучше хранить?

Пример:
class CustomObjectNormalizer extends ObjectNormalizer
{
   public function normalize($object, $format = null, array $context = [])
   {
       $data = parent::normalize($object, $format, $context);

       return array_filter($data, function ($value) {
           return null !== $value;
       });
   }
}
источник

AK

Anton K. in symfony
Статичными методами можно?
источник

AK

Anton K. in symfony
Если зависимостей нет, то статически вызывать. Если есть, то сервис
источник

AF

Alexei Fedorov in symfony
Anton K.
Статичными методами можно?
Преобразрвать метод public function normalize в статический метод, я правильно понял суть?
источник

ПГ

Павел Г. in symfony
Alexei Fedorov
Преобразрвать метод public function normalize в статический метод, я правильно понял суть?
Зависит от того что вы хотите в целом. Нормалайзеры имеют смысл если вы используете их в сериалайзере. А так - это обычный транфрмер будет
источник

ПГ

Павел Г. in symfony
И с ними очень, как по мне, спорная вещь - если включать их в автовайринг - то их будет цеплять главный сериалайзер. Но тогда будет проблема - что нормалайзер для одного объекта будет один на весь проект. Ну и можно будет ловиться на сайд эффектах, когда не понятно откуда изменения сущности прилетело в ответе.
Если же не включать (т.е. заэкслюдить папку нормалайзеров для DI), то нужно будет сериалайзер собирать самому каждый раз
источник

AF

Alexei Fedorov in symfony
Сейчас мне надо просто из объекта убрать свойства, которые равны NULL.  

В контроллере мне придёться подключить кастомный нормалайзер (см выше), перед тем как отдам JSON
      $encoders = [new XmlEncoder(), new JsonEncoder()];
       $normalizers = [new CustomObjectNormalizer()];
       $serializer = new Serializer($normalizers, $encoders);
источник

AF

Alexei Fedorov in symfony
Понятно что Контроллеры будут наследоваться и врядли мне снова придёться обращаться к услугам CustomObjectNormalizer, но если вдруг мне снова придёться использовать класс CustomObjectNormalizer - где лучше хранить этот класс. Директори Entity, Controller, Repository точно нет.  У меня просто почти нет опыта с Симфони, поэтому и спрашиваю - Вы на практике где храните такие хелперы?
источник

ПГ

Павел Г. in symfony
Alexei Fedorov
Понятно что Контроллеры будут наследоваться и врядли мне снова придёться обращаться к услугам CustomObjectNormalizer, но если вдруг мне снова придёться использовать класс CustomObjectNormalizer - где лучше хранить этот класс. Директори Entity, Controller, Repository точно нет.  У меня просто почти нет опыта с Симфони, поэтому и спрашиваю - Вы на практике где храните такие хелперы?
Это уже как вашей душе угодно. Можно создать Serializer/Normalizer, Можно просто Normalizer. Короче тут уже на вкус и цвет
источник

AF

Alexei Fedorov in symfony
Спасибо
источник

SK

Sergej Karavajnij in symfony
Anton K.
вы формируете docker image со всеми composer зависимостями? а потом этот docker image в какой-то приватный репо кидаете?
Да, так возможно
источник

SK

Sergej Karavajnij in symfony
В проекте с AWS именно так и делаю
источник

AK

Anton K. in symfony
Sergej Karavajnij
В проекте с AWS именно так и делаю
а данные в бд где?
источник

A

Arseni in symfony
Спасибо! А я думал экшены это немного другое.
источник

SK

Sergej Karavajnij in symfony
В некоторых других юзаю docker context и напрямую там контейнер собирается
источник

SK

Sergej Karavajnij in symfony
Anton K.
а данные в бд где?
БД отдельно
источник

SK

Sergej Karavajnij in symfony
Тут уж от твоей инфраструктуры и архитектуры зависит
источник

k

knopkod4v in symfony
Павел Г.
И с ними очень, как по мне, спорная вещь - если включать их в автовайринг - то их будет цеплять главный сериалайзер. Но тогда будет проблема - что нормалайзер для одного объекта будет один на весь проект. Ну и можно будет ловиться на сайд эффектах, когда не понятно откуда изменения сущности прилетело в ответе.
Если же не включать (т.е. заэкслюдить папку нормалайзеров для DI), то нужно будет сериалайзер собирать самому каждый раз
можно либо вырубить сериалайзер в конфиге и самому собирать его, либо теги выпилить через compiler pass
источник

ПГ

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