@KuzmenkoArtem

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

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


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

Спасибо!

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
Affor Москва
от 135 000 руб.
от 80 000 до 120 000 руб.
Zoon Москва
от 140 000 до 220 000 руб.
18 июл. 2019, в 10:14
300 руб./за проект
18 июл. 2019, в 09:39
5000 руб./за проект
18 июл. 2019, в 09:29
700 руб./в час