как раз статья навеяна тем что к тому моменту активно использовалось в xenforo/magentoНасколько я понял, задача навеяна вот этим
ну тогда магии будет в разы больше чем с последовательным наследованием. И даже пробовал разок, но могут вылезти нюансы когда слишком много вызовов __call в цикле.Твоя проблема решается эмуляцией прототипного наследования через __call и прокси.
@ksnk такое уже давно придумано и об этом я и писал выше:
поддерживать этот треш вообще не возможно и невозможно от слова совсем - проще руками править код (welcome to opencart world mazafaka! ).И есть еще 3-й вариант для совсем альтернативно одаренных, полный треш - поиск замена по исходникам с генерацией файлов кеша.
Вот мне реально зашло! Понятно что это не для основного кода, но закостылить что-то или где-то для сверхвнутренного использования - самое то. Появилось пара идей как и где подобное применить (не инъекцию зависимостей, а такой хитрый проброс через yield).Нет, конечно. Мне просто стало интересно, получится ли как-нибудь извернуться с yield в конструкторе и эмуляцией parent подменой $this а-ля JS. Получилось
Чтобы было понятно почему у меня такие странные идеи, основная моя работа была лет 8 была пилить модули для xenforo и magento (т.к. системы расширения похожие). Да системы не фонтан, но вот с точки зрения пользовательского опыта - есть хорошие идеи. И все это время пробовал все различные идеи как обойти/изменить/заменить встроенную систему расширения (учитывая что по умолчанию там не все можно расширять). Пробовал все перечисленное в данной теме (и аоп и ранкит) - и с точки зрения соотношения плюсов и минусов - такое вот динамическое наследование было лучше всего (дебаг, поддержка стормом и т.д.). Кое что было неплохо, например использовать прокси полностью на магии __call + __get, но время выполнения увеличивалось значительно в некоторых случаях и это как раз та часть которую никак нельзя контролировать.
Но последние 2 года уже этим не занимаюсь, а сейчас появилось немного свободного времени и решил заняться исследованиями, как можно было бы сделать то же самое в плане расширяемости но лучше или без такого наследования.