Hallo @gajel
Was meinst Du mit
wo kein neues Objekt erzeugt wird
?
Im Grunde liegst Du schon richtig mit
oxNew(Namespace)
um eine neue Objekt Instanz zu erstellen.
Das oxNew dient dazu, dass wenn mehrere Module die gleiche Klasse überladen eine Überladungskette eingehalten werden kann. Damit hat jedes Modul die Chance damit seine Anpassung auch wirkt.
Dort spielt
parent::Methode();
eine wichtige Rolle, wenn das parent fehlt unterbricht man die Überladungskette und ein Modul könnte seine Anpassungen nicht ausspielen.
Deine Beispiel Methode isValidPayment()
ist als privat gekennzeichnet. Dies ist PHP, immer wenn eine Eigenschaft oder Methode als privat gekennzeichnet ist kommst da nicht dran mit Deiner Überladung.
Die Variable $basket
ist ein Übergabeparameter. Dies auch wieder PHP, die Methode isValidPayment erwartet ein Warenkorb Objekt welches Du vor Aufruf erzeugen musst und dann als Parameter übergeben musst.
Dies sind Core Klassen welche nicht überladen werden können. Vor OXID eShop 6er Serie gab es eine Liste von nicht überladbaren Klassen damals oxDb und oxConfig OXID Forge – The knowledge base of the OXID eShop daher macht oxNew Aufruf keinen Sinn da man Deine genannten Klassen nicht überladen kann und dort keine Überladungskette sichergestellt werden muss.
Mit OXID eShop 6er Serie ist die Liste überflüssig geworden siehe auch Oxid 6: List of not overloadable classes
Wie versuchst Deine Methode myFunction() aufzurufen und warum hast diese als private gekennzeichnet? Soll Sie nur innerhalb Deiner Überladungsklasse Order genutzt werden?
Magic Getters haben nichts mit der Herstellung einer Verbindung zur Datenbank zu tun. Dort bitte wie in Deinem Link angegeben mit
\OxidEsales\Eshop\Core\DatabaseProvider::getDb()
Das obere Beispiel in der verlinkten Dokumentation dient nur zur Veranschaulich wie Du mit OXID eShop Objekten arbeitest und auf Eigenschaften zugreifen kannst bzw. dieser verändern inkl. Speicherung in Datenbank.