Есть 3 класса: class A{ static function getData(){ return B::getData(); } } class B{ static function getData(){ return C::getData(); } } class C{ static function getData(){ return 555; } } Мне нужно изменить так, что бы в итоге возвращалось не 555, например 444. Это получается мне нужно наследовать обязательно все 3 класса и переопределять каждый метод?
Ну я не стал просто это писать, но напишу: class A_my extends A{ static function getData(){ return B_my::getData(); } } class B_my extends B{ static function getData(){ return C_my::getData(); } } class C_my extends C{ static function getData(){ return 444; } } Получается что бы вернуть значение 444 нужно изменить всего лишь один метод C::getData(), но что бы до него добраться нужно наследовать все классы по цепочке, я думал может есть проще вариант?
Мы ведь в теме для профи? Тогда для начала нужно понять, с какого перепугу у нас тут везде статика. Она конечно имеет право на существование, но я с трудом представляю таски, где всё это нельзя заменить нормальным DI с контейнером.
Ну я все упростил до безобразия, что бы проще понять, на самом деле это ядро битрикса. Не хочется кучу классов наследовать что бы добраться до 1 метода в котором мне нужно изменить данные. Думал может проще есть метод. Поставлю вопрос по другому, если взять пример из 1 поста и вызвать A::getData(); получим 555, как можно сделать так что бы методом C::getData(); я мог вернуть 444, но обязательно нужно прогнать результат через методы getData() классов B и A, в них происходит важная обработка данных?