V PHP se toho dá dynamicky změnit hodně. Obvykle jen stačí podívat se na problém z trochu odlišného úhlu. Pokud by sis přesně vzpomněl, co ti scházelo, můžeme to prodiskutovat třeba v jiném vlákně. Mnoho problémů se dá elegantně vyřešit použitím polymorfismu.
Například, wrappery funkcí. Všechno k čemu se v pythonu používají dekorátory funkcí a tříd. Nebo například v testech mohu chtít přepsat nějakou funkci, kterou knihovna vnitřně používá pro nějakou IO operaci. Pro modifikaci tříd se dědění nedá použít, pokud chci aby nová třída měla stejný název jako stará. Jsou to spíš jen drobnosti. Rozhodně to není důvod proč nepoužívat PHP.
Wrappery se dají udělat pomocí magických metod. Jistě, je to jiné než v Pythonu, ale podporované to je.
Testy mě donutily vykopat takové IO operace ven ze tříd. Připadá mi to praktičtější než je překrývat při testování.
Nová třída může mít stejný název jako třída, ze které dědíš. Stačí použít jiný namespace. Jen mi poněkud uniká, proč bych měl chtít mít třídu-potomka se stejným názvem jako rodiče. Vidím to jen jako potenciální zdroj problémů, resp. WTF.
Netvrdím, že tohle je jediný správný postup, ale spíš ukazuji na snadnou řešitelnost takových problémů.