# Oxid Framework verstehen

**URL:** <https://forum.oxid-esales.com/t/oxid-framework-verstehen/97393>\
**Category:** Deutsches Forum\
**Tags:** development\
**Created:** [December 7, 2020, 11:34am UTC](https://forum.oxid-esales.com/t/oxid-framework-verstehen/97393 "2020-12-07T11:34:05Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![indianer3c](https://forum.oxid-esales.com/user_avatar/forum.oxid-esales.com/indianer3c/32/4325_2.png) [@indianer3c](https://forum.oxid-esales.com/u/indianer3c)\
**Post date:** [December 7, 2020, 3:41pm UTC](https://forum.oxid-esales.com/t/oxid-framework-verstehen/97393/2 "2020-12-07T15:41:01Z")

</div>

Hallo @gajel 🙂

> [@gajel](#):
>
> Jetzt gibt es auch fälle wo kein neues Objekt erzeugt wird aber ein Zugriff auf die Eigenschaften und Methoden dieser Klasse zugreifen trotzdem möglich sind. Beispiel aus der Model/Order.php.

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.

> [@gajel](#):
>
> Liegt es daran, dass das bereits erstellte (wo auch immer) Objekt in die Funktion übergeben wurde? `private function isValidPayment($basket)`
> 
> Allerdings wird in der Order.php kein $Basket Objekt erzeugt. Kann mir das jemand erläutern?

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.

> [@gajel](#):
>
> Hier wird ja nicht direkt mit oxNew und einem Verweis auf die Klasse gearbeitet. Greife ich in dem Fall nicht auf die ganze Klasse zu, sondern direkt auf eine Methode dieser Klasse? Aber müsste ich selbst dann nicht mit oxNew ein neues Objekt erstellen? Fragen über Fragen.

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](https://oxidforge.org/en/list-of-not-overloadable-classes.html) 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](https://forum.oxid-esales.com/t/oxid-6-list-of-not-overloadable-classes/94543)

> [@gajel](#):
>
> Modul wird erkannt aber die eigentliche Funktion wird nicht ausgeführt. Bennen ich die Funktion allerdings in eine bereits bestehende Funktion und arbeite dann mit `parent::` wird diese Funktion dann ausgeführt.

Wie versuchst Deine Methode myFunction() aufzurufen und warum hast diese als private gekennzeichnet? Soll Sie nur innerhalb Deiner Überladungsklasse Order genutzt werden?

> [@gajel](#):
>
> Dann wäre noch interessant zu wissen was die “sinnvollere” Methode ist um mit der DB zu kommunizieren. Ganz normal über die Methoden der Klassen (getDb) oder über die sogenannten Magic Getters ([https://docs.oxid-esales.com/developer/en/6.1/modules/using\_database.html](https://docs.oxid-esales.com/developer/en/6.1/modules/using_database.html))?

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.

---

_[View the full topic](https://forum.oxid-esales.com/t/oxid-framework-verstehen/97393)._
