Примерный алгоритм такой
- В метод приходит объект
- При неком условии нужно добавить объекту функциональность
- Работать дальше
Похоже на паттерн декоратор, но у исходного объекта нет интерфейсов, и нужно именно добавить функциональность, а не расширить уже существующие методы
Спасибо!
P.S. изменять исходный объект нельзя
Думал о таком.
- Создать класс обертку
- В конструктор передавать желаемый объект для расширения и добавить как поле класса
- создать новый метод с необходимым функционалом
- создать __call магический метод и переводить все вызовы методов на изначальный объект
Проблема в таком подходе что IDE (шторм) не выдает подсказок при вызове методов, а хотелось бы. Может есть какой-то способ указать? кроме как
@method
в комментариях, т.к. там очень много методов
P.S.2 расширить класс наследованием тоже сложно, так как у исходного класса сложный конструктор, и просто вытащить значения из исходного объекта и передать в конструктор не получится