Но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?

|
ChuevEV 2022-06-23 14:44:23
vkhramtsov 2022-06-23 14:42:13
я так понимаю что симфони серилазация используется?

Да, симфони сериалайзер. Это ж чат про симфони))

vkhramtsov 2022-06-23 14:44:32
ну мог быть JMS
ChuevEV 2022-06-23 14:44:49
vkhramtsov 2022-06-23 14:44:32
ну мог быть JMS

пардон, я про него и забыл))

vkhramtsov 2022-06-23 14:47:03
https://symfony.com/blog/new-in-symfony-5-1-serializer-improvements#added-ignore-annotation

New in Symfony 5.1: Serializer improvements (Symfony Blog)Symfony
Symfony 5.1 improves the serializer with a new @Ignore annotation, an unwrapping denormalizer, support for stdClass and scalar denormalization.
vkhramtsov 2022-06-23 14:47:28
В теории в шестёрке должно работать
vkhramtsov 2022-06-23 14:48:22
https://symfony.com/doc/current/components/serializer.html#ignoring-attributes

The Serializer Component (Symfony Docs)Symfony
vkhramtsov 2022-06-23 14:49:00
Кстати, а почему аннотации, а не атрибуты? Версия пыхи не позволяет или есть другие причины?
ChuevEV 2022-06-23 14:51:53
vkhramtsov 2022-06-23 14:49:00
Кстати, а почему аннотации, а не атрибуты? Версия пыхи не позволяет или есть другие причины?

Позволяет, по привычке, ни как не настроюсь на новый лад

ChuevEV 2022-06-23 15:27:13
Почему то не работает @Ignore
А если через контекст передать, то работает https://symfony.com/doc/current/components/serializer.html#option-2-using-the-context

The Serializer Component (Symfony Docs)Symfony
Brr1R11 2022-06-24 15:09:46
всем привет!
потребовалось сделать версионирование для апи, сделал в лоб проверку в коде требуемой версии и версии из запроса (если очень упростить, то if ($currentVersion >= ‘3.1.5’) {//} else {//})

но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?

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

может кто-то ктнуть носом в доку или подсказать более изящный способ?

wiistriker 2022-06-24 15:10:56
версионирование на хидерах сделано, верно?
wiistriker 2022-06-24 15:11:18
мб есть смысл в контроллере просто разные методы дергать в зависимости от версии и не усложнять
wiistriker 2022-06-24 15:12:17
касаемо вопроса — посмотрите в сторону factory в контейнере
Brr1R11 2022-06-24 15:13:15
wiistriker 2022-06-24 15:10:56
версионирование на хидерах сделано, верно?

да, в заголовке клиент отдаёт версию билда

Brr1R11 2022-06-24 15:14:12
прост сложность в том, что основной код не меняется, чаще всего могут поменяться мелкие условия/исключения, касаемо каких-то сильных изменений договорились о новых роутах
andrey_vs_you 2022-06-24 17:11:03
hello world! посоветуйте, пожалуйста, репозитории с проектами на symfony. хочу получше в нем разобраться и ищу бэст практис)
nickname123452 2022-06-24 17:39:06
Github.com
someniatko 2022-06-24 17:46:38
andrey_vs_you 2022-06-24 17:11:03
hello world! посоветуйте, пожалуйста, репозитории с проектами на symfony. хочу получше в нем разобраться и ищу бэст практис)

symfony demo есть

andrey_vs_you 2022-06-24 17:47:49
спасибо
someniatko 2022-06-24 17:49:16
andrey_vs_you 2022-06-24 17:11:03
hello world! посоветуйте, пожалуйста, репозитории с проектами на symfony. хочу получше в нем разобраться и ищу бэст практис)

а бест пректисес описаны в книгах
— Robert Martin: Clean code,
— Symfony: the Fast Track,
— Matt Zandstra — PHP 8 Objects, Patterns, and Practice,
— Carlos Buenosvinos, Christian Soronellas — Domain-Driven Design in PHP

someniatko 2022-06-24 17:51:11
вообще имхо по репозиториям из интернета что-то прочувствовать сложно, желательно чтобы дали поработать с реальным проектом
endemio 2022-06-24 18:00:26
someniatko 2022-06-24 17:49:16
а бест пректисес описаны в книгах
— Robert Martin: Clean code,
— Symfony: the Fast Track,
— Matt Zandstra — PHP 8 Objects, Patterns, and Practice,
— Carlos Buenosvinos, Christian Soronellas — Domain-Driven Design in PHP

Carlos Buenosvinos, Christian Soronellas — Domain-Driven Design in PHP что из этой книги полезного вынесли?

someniatko 2022-06-24 21:04:52
endemio 2022-06-24 18:00:26
Carlos Buenosvinos, Christian Soronellas — Domain-Driven Design in PHP что из этой книги полезного вынесли?

конкретно я начал с классики Eric Evans — DDD, а затем «Implementing DDD» с примерами на Java уже не помню какого автора, и вынес очень многое, в первую очередь что программные системы должны строиться в первую очередь исходя из потребностей бизнеса, что есть такие понятия как Entity, Value Objects, аггрегаты.

Эти две книги в корне поменяли лично мой подход к разработке. Сейчас я намного чаще стал проводить время, обсуждая вместе с бизнесом доменные модели сервисов, которые мы строим.

someniatko 2022-06-24 21:07:12
Конкретно Domain-Driven Design in PHP я листал довольно бегло, т.к. мне она особенной ценности после предыдущих двух не несет. Но Андрею должна подойти идеально, т.к. знакомит с основными понятиями, с которыми мы встречаемся при разработке реальных приложений — сущности, value object, сервисы и т.п.. Обычно когда учишься программировать, знаешь просто «классы, функции, интерфейсы, переменные» — а эта книга дает следующий уровень.
someniatko 2022-06-24 21:07:50
Ну и с абстрактных текстов типа книги Эванса, новичкам конечно же начинать не стоит.
dexplon 2022-06-25 10:33:47
Brr1R11 2022-06-24 15:09:46
всем привет!
потребовалось сделать версионирование для апи, сделал в лоб проверку в коде требуемой версии и версии из запроса (если очень упростить, то if ($currentVersion >= ‘3.1.5’) {//} else {//})

но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?

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

может кто-то ктнуть носом в доку или подсказать более изящный способ?

Сделать загрузку сервисов через фабрику, в фабрике дергать реквест текущий. Дргуое дело что это будет неочевидный код, но вроде вы этого и добиваетесь.
Возможно имеет смысл в копипасте на уровне контроллеров, но там тоже «такое себе», но зато очевидно и без проблем с ифами.
UPD. Фабрику уже посоветовали…, не увидел

Brr1R11 2022-06-25 10:45:32
Ну да, думал насчёт фабрики уже, в пн буду пробовать

А фабрику для каждого сервиса обязательно явно описывать или как-то можно дефолтную для всех указать?)

dexplon 2022-06-25 11:00:39
Brr1R11 2022-06-25 10:45:32
Ну да, думал насчёт фабрики уже, в пн буду пробовать

А фабрику для каждого сервиса обязательно явно описывать или как-то можно дефолтную для всех указать?)

А как вы хотите описать сервисы не явно, когда у вас разные правила?) Ну и DI такого не предусмотрит, если только что-то свое накручивать, причем даже не зная в какую сторону смотреть.

Brr1R11 2022-06-25 11:16:01
dexplon 2022-06-25 11:00:39
А как вы хотите описать сервисы не явно, когда у вас разные правила?) Ну и DI такого не предусмотрит, если только что-то свое накручивать, причем даже не зная в какую сторону смотреть.

Понял, спасибо)

chestudio 2022-06-25 19:43:38
Здравствуйте уважаемые участники. Нужны middle developers на проект. Почасовая ставка. Пишите в ЛС кто заинтересован.
|