UPD: Лучше конечно такого избегать. Все это страшно, ужасно, и воняет. Но воняет чуть меньше чем VQMOD, и если уж приходится патчить «живой» и обновляемый, но жуткий легаси, то такой подход имеет право на существование. Но НИКОГДА не делайте так в проектах которые вы только начинаете или можете изменить архитектуру на более расширяемую. Статью оставляю как есть. «На память».
Иногда очень хочется переопределить поведение класса родителя, не меняя его код.
К примеру поменять место хранения шаблонов из файлов в базу… или добавить кэширование.
или заменить в ORM удаление записей на пометку их как удаленные.
Да мало ли что мы можем пожелать изменить.
Если каждый программист будет лезть в ядро фреймворка или просто в чужой код, то это будет каша.
У этой задачи есть множество решений. Я хочу предложить то, которое мне нравится больше всего.
Решение основано на __autoload() а точнее на spl_autoload_register.