я так понимаю что симфони серилазация используется?
Кстати, а почему аннотации, а не атрибуты?
но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?
может кто-то ктнуть носом в доку или подсказать более изящный способ?
версионирование на хидерах сделано, верно?
А фабрику для каждого сервиса обязательно явно описывать или как-то можно дефолтную для всех указать?
А как вы хотите описать сервисы не явно, когда у вас разные правила?
Да, симфони сериалайзер. Это ж чат про симфони))
пардон, я про него и забыл))
Symfony 5.1 improves the serializer with a new @Ignore annotation, an unwrapping denormalizer, support for stdClass and scalar denormalization.
Позволяет, по привычке, ни как не настроюсь на новый лад
А если через контекст передать, то работает https://symfony.com/doc/current/components/serializer.html#option-2-using-the-context
потребовалось сделать версионирование для апи, сделал в лоб проверку в коде требуемой версии и версии из запроса (если очень упростить, то if ($currentVersion >= ‘3.1.5’) {//} else {//})
но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?
подумал об атрибуте, но не нашел, куда можно воткнуть проверку, чтобы загрузить нужный класс
может кто-то ктнуть носом в доку или подсказать более изящный способ?
да, в заголовке клиент отдаёт версию билда
symfony demo есть
а бест пректисес описаны в книгах
— 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
— 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 что из этой книги полезного вынесли?
конкретно я начал с классики Eric Evans — DDD, а затем «Implementing DDD» с примерами на Java уже не помню какого автора, и вынес очень многое, в первую очередь что программные системы должны строиться в первую очередь исходя из потребностей бизнеса, что есть такие понятия как Entity, Value Objects, аггрегаты.
Эти две книги в корне поменяли лично мой подход к разработке. Сейчас я намного чаще стал проводить время, обсуждая вместе с бизнесом доменные модели сервисов, которые мы строим.
потребовалось сделать версионирование для апи, сделал в лоб проверку в коде требуемой версии и версии из запроса (если очень упростить, то if ($currentVersion >= ‘3.1.5’) {//} else {//})
но в какой-то момент надоело раскидывать эти конструкции, посему задумался, можно ли как-то загружать тот или иной сервис из контейнера в зависимости от заголовка запроса?
подумал об атрибуте, но не нашел, куда можно воткнуть проверку, чтобы загрузить нужный класс
может кто-то ктнуть носом в доку или подсказать более изящный способ?
Сделать загрузку сервисов через фабрику, в фабрике дергать реквест текущий. Дргуое дело что это будет неочевидный код, но вроде вы этого и добиваетесь.
Возможно имеет смысл в копипасте на уровне контроллеров, но там тоже «такое себе», но зато очевидно и без проблем с ифами.
UPD. Фабрику уже посоветовали…, не увидел
А фабрику для каждого сервиса обязательно явно описывать или как-то можно дефолтную для всех указать?)
А фабрику для каждого сервиса обязательно явно описывать или как-то можно дефолтную для всех указать?)
А как вы хотите описать сервисы не явно, когда у вас разные правила?) Ну и DI такого не предусмотрит, если только что-то свое накручивать, причем даже не зная в какую сторону смотреть.
Понял, спасибо)