Hallo eddi, hallo Sven, hallo dedlfix,
vielen Dank für Eure Antworten.
Wie es aussieht, werde ich doch jeder abgeleiteten Klasse Bar1 etc. eine eigene statische getClassname()-Methode verpassen. Ich hatte gehofft, dieses zu vermeiden, da diese Methoden ja alle identisch sind. (Stichwort DRY-Prinzip „Don’t repeat yourself“).
In der realen Umsetzung (das verkürzte Beispiel war ja nur zur Demonstration des Problems) wird also jede Unterklasse eine Methode Bar1::getInstance() haben, die der Methode Foo::getInstance() als Parameter den Klassennamen mitliefert. Diese bildet dann gegebenenfalls ein neues Objekt mit return new $objectName;.
Ich hatte gehofft, dass das eleganter geht.
Viele Grüße
Olaf Schneider