whirlwind
TDD infected, paranoid
Так а чем инжект сервис локатора не подходит я так и не понял? Один аргумент по соглашению. Наследуй хоть заунаследуйся.и расширения по своей сути гавно не совместимое друг с другом. 100500 хуков которыъ все равно не хватает и приходится делать простыни копипаста оригинального кода (медиавики в том числе).
Наследование в данном случае - это не наследование как его применяют - это полная замена поведения части методов оригинального класса и чтобы это работало уже только с новым классом (оригинальный нигде в коде не используется только если вызов родителя). Т.е. фактически это композиция по существу, но в качестве инструмента использующая наследование (как костыльный инструмент). Т.е. фактически можно было просто генерировать итоговый файл с измененными частями кода и все. Но этот подход позволяет добиться того же самого без кодогенерации