Heyho!
Interessant! Hm, aber dann werde ich mich wohl mit einem Workaround begnügen müssen.
Wobei ich bei Deinem Beispiel nicht ganz verstehe, warum die abstrakte Methode überhaupt static sein muss? Du kannst doch genausogut eine normale Methode, die nicht static ist nehmen, dann hast Du die Probleme nicht.
Ja, das stimmt schon. Die Methode muss aber halt static sein ;)
Konkret gehts darum, dass ich für diverse Objekte (accounts, institutionen, etc) eine Klasse GenericObject habe, die bestimmte Methoden, die von allen Klassen gleich benutzt werden, bereitstellt.
Zu diesen Methoden zählt auch eine statische Methode "validateValue($attribute, $value)" die prüft, ob für ein gegebenes Attribut ein gegebener Wert zulässig ist. So kann ich sämtliche Überprüf-Funktionen schön kapseln.
Dann gibt es weiterhin eine Objekt-Methode, die die statische Methode einsetzt. Als Beispiel: setValue($attribute, $newValue);
Diese wird z.B. so aufgerufen: $myAccount->setValue("name", "Peter");
Die setValue überprüft nun intern, ob der Wert "Peter" für das Attribut "name" zulässig ist.
Klar, dieses Szenario ginge auch über eine Objektmethode.
Aber was ist mit einer Methode createNewAccount($name, $gender, $tel, $fax, ...)? Die ist ja auch statisch, weils noch kein Objekt gibt (es wird ja erst jetzt angelegt). Und wegen dieser Methode muss ich dann halt auch die validateValue() static haben.
Oder kann man das irgendwie eleganter lösen?
Eine Möglichkeit wäre halt jetzt, dass ich die setValue() von der abstrakten Klasse in die konkrete Klasse verschiebe. Dann hab ich halt n bisschen redundanten Code, aber das ließe sich noch einrichten. Ist ja nur n Zweizeiler.
Gruß
Mastershrimp