@KuzmenkoArtem

Какой лучший способ расширить класс?

Примерный алгоритм такой
  • В метод приходит объект
  • При неком условии нужно добавить объекту функциональность
  • Работать дальше


Похоже на паттерн декоратор, но у исходного объекта нет интерфейсов, и нужно именно добавить функциональность, а не расширить уже существующие методы

Спасибо!

P.S. изменять исходный объект нельзя

Думал о таком.
  • Создать класс обертку
  • В конструктор передавать желаемый объект для расширения и добавить как поле класса
  • создать новый метод с необходимым функционалом
  • создать __call магический метод и переводить все вызовы методов на изначальный объект

Проблема в таком подходе что IDE (шторм) не выдает подсказок при вызове методов, а хотелось бы. Может есть какой-то способ указать? кроме как @method в комментариях, т.к. там очень много методов

P.S.2 расширить класс наследованием тоже сложно, так как у исходного класса сложный конструктор, и просто вытащить значения из исходного объекта и передать в конструктор не получится
  • Вопрос задан
  • 413 просмотров
Пригласить эксперта
Ответы на вопрос 1
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
похоже нужно просто отнаследоваться и вызвать в зависимости от условий необходимый конструктор)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 февр. 2020, в 16:03
50000 руб./за проект
17 февр. 2020, в 15:50
700 руб./за проект
17 февр. 2020, в 15:23
50000 руб./за проект