Statische Funktionen in erweiterten Klassen

Hey an alle,

wie der Titel schon andeutet hätte ich eine Frage zum Thema statische Funktionen. Ich habe für ein Modul die OXID Standard Klasse “Address” erweitert. Diese erweiterten Klasse enthält nun eine statische Funktion. Grundlegend funktioniert das auch. Ich kann meine Logik mit

\Esyon\MyModul\Model\Address::myFunction()

aufrufen. Allerdings ist mir auch aufgefallen, dass je nach Position meiner Klasse in der Module-Chain folgender Fehler geworfen wird:

[type E_ERROR] [file /var/www/html/oxid/source/modules/oe/oepaypal/Model/Address.php] [line 29] [code ] [message Class 'OxidEsales\PayPalModule\Model\Address_parent' not found]

Höchstwahrscheinlich, weil keine “oxNew” zum erzeugen der Klasse verwendet werden muss und somit der komplette Class Loader umgangen wird.

Wie ist eure Erfahrung mit statischen Funktionen? Lieber bei erweiterten Klassen vermeiden? Oder gibt es hier einen Best Practice Ansatz?

MFG Stephan

Das sieht nach nem Fehler aus. Was passiert denn, wenn Du die Funktion in der erweiterten Klasse aufrufst?

Ja denke nicht dass das gehen kann. Vielleicht eine helper-Klasse für die statischen Methoden machen?

@rubbercut,

Die Funktion lässt sich aufrufen und macht auch genau das was sie soll. Wie gesagt, die Fehler enstehen erst wenn die Reihenfolge der Module Chain verändert wird.

@leofonic,

Ja eine Helper Klasse wäre durchaus machbar. Ich bin so gesehen auch gar nicht auf die Erweiterung der Address Klasse angewiesen. Die Logik hätte nur Thematisch dazu gepasst.

Mir ging es hierbei auch weniger um die Lösung des Fehlers, sondern mehr darum: Sollte man statische Funktionen in erweiterten Standard Klassen verwenden. Das hätte ich in meinem 1. Beitrag wohl besser zum Ausruck bringen sollen.