„Ked urobim to iste v PHP tak preklikavate cely system?“
V případě TDD je to trochu přehnané, ale pokud testy z nějakého důvodu nejsou, pak asi není moc jiných cest.
Samozřejmě, i v Javě je Reflection API, já to používám velmi výjimečně (radši mám zpracování anotací pomocí handlerů typu http://projectlombok.org) a třeba ve čtvrt mega zdrojácích se nemusí objevit jediné jeho použití. Všechna použití si pamatuju* (nepočítám nějaké debugovací použití typu getClass().getName() apod., což by vadit nemělo), protože každé potenciálně problematické použití předem důkladně zvažuju. V J2ME na místech, kde mám uvést jméno třídy jako String, používám konstrukci MyClass.class.getName(). Pak se již jistota, že to bude po odstranění oné metody funkční, blíží 100%.
*) Samozřejmě že v projektech, na kterých se podílí více lidí, toto patří do dokumentace.