Size: a a a

2022 January 13

МФ

Максим Федоров... in symfony
если в лоб: можете сделать атрибут/аннотацию, сделать в compiler pass обертку над вашими сервисами
источник

VM

Volodymyr Melko in symfony
как я понял, то он не хочет менять исходнки, он хочет передать список методов вида ClassName::method и чтоб оно само логировало, не меняя исходнки, не добавляя ничего
источник

МФ

Максим Федоров... in symfony
ну менять и не придется — повесить только атрибут
источник

МФ

Максим Федоров... in symfony
полностью не трогать?
источник

VM

Volodymyr Melko in symfony
АОП должен помочь, там есть возможность в самом аспекте привязать его к методам, но аспекты нужно будет генерить, чтоб к нему правильную аннотацию проставить со списком методов
источник

VM

Volodymyr Melko in symfony
+
источник

МФ

Максим Федоров... in symfony
АОП = повесить аннотацию
источник

VM

Volodymyr Melko in symfony
ну типа если ты полезешь вешать аттрибут, то что тебе мешает вместо атрибута логгер прокинуть? оО
источник

VM

Volodymyr Melko in symfony
ну судя по приеру в репе - нет. Аннотация может быть в самом аспекте
источник

МФ

Максим Федоров... in symfony
аспект = аннотация
источник

AD

Andrey Dembitskyi in symfony
Делал такое с jaeger и proxy manager.
Хз, или есть готовые пакеты.

Как делал - теги в DI, compiler pass по ним понимает что нужно сделать proxy и регистрирует decorator
источник

VM

Volodymyr Melko in symfony
источник

VM

Volodymyr Melko in symfony
сам аспект может сождержать инфу о том, на какие методы он срабатывает
источник

AD

Andrey Dembitskyi in symfony
В целом сделать несложно.
Час-три должно быть
источник

МФ

Максим Федоров... in symfony
а ну круто, типа в самом аспекте расставляем где... ну норм тогда вариант
источник

VM

Volodymyr Melko in symfony
Просто надо небольшой кодогкнкратор, который этот список из конфига прокинет... Ну или считать аспект конфигом, это будет единственное место изменений
источник

O

Oleg in symfony
Спасибо всем за ответы. Вариант с аспектами очень интересный, но наверное не подойдёт в рамках проекта.
Скорее всего будем прокидывать логгер по стандарту.
источник

AD

Andrey Dembitskyi in symfony
Там же писать 200 строк
источник

v

voiciano in symfony
Подскажите плз, как архитектурно лучше решить такую задачу (с точки зрения ооп)?

Если мне нужно упростить сигнатуру одного метода класса, но дорабатывать этот класс я не могу.

Один из вариантов, это наследовать класс, добавить свой метод-обертку. Но с наследование не красиво получается.

Мне говорят, что здесь поможет паттерн adapter, подскажите, действительно ли адаптер подходит ? т.к. мне кажется, что адаптер все-таки для того, чтобы подогнать один интерфейс под другой.
А в моем случае, нужно всего лишь сделать свою обертку над одним методом.
источник

SP

Sergey Protko in symfony
если есть необходимость сконвертировать один интерфейс в другой - то это определение паттерна адаптер
источник