Artikelattribute in oxorder => *Rekursion*

Ich habe hier eine nicht beabsichtigte Rekursion hervorgerufen, die mir
etwas merkwürdig vorkommt, und die ich lieber vermeiden will.

Nach dem Abspeichern der Bestellung einer Artikelliste (also nach einer
erfolgreichen Bestellung) sollen weitere Daten gespeichert werden, die
sich aus den Attributen der Artikel ergeben.

Dazu habe ich [B]oxorder::__save() [/B]überschreiben. Dort werden die oxorderarticle
durchgeloopt. In diesem Loop will ich die Attribute des Artikels laden.

oxrderarticle kennt keine Attribute mehr, deshalb mache ich das hier:

$art = oxNew('oxarticle');
$art->load($oOrderArticle->oxorderarticles__oxartid->value);
$art->_getMyData();
print_r($art);

[B]_getMyData()[/B] ist eine Methode eines erweiterten Artikels, hier existiert
die Methode [B]getAttributes()[/B], d.h. ich bekomme die Attribute und kann damit was machen.

Aber es gibt eine Rekursion. Die Ausgabe oben ergibt

....

    [_oAmountPriceList:protected] => oxAmountPriceList Object
        (
            [_sObjectsInListName:protected] => oxbase
            [_oArticle:protected] => fe_MyExtendedArticle_oxarticle Object
 *RECURSION*
            [_aArray:protected] => Array
                (
                    [99d66ceef708a7f14631d89e77fab464] => oxBase Object
                        (
                            [_sOXID:protected] => 99d66ceef708a7f14631d89e77fab464
                            [_iShopId:protected] => oxbaseshop
                            [_blIsSimplyClonable:protected] => 1
                            [_sClassName:protected] => oxbase
...

Hier taucht plötzlich ein [B]oAmountPriceList[/B] - Objekt auf, eine Liste, die wiederum erweiterte Artikelobjekte enthält.

Ich hoffe, das verständlich beschrieben zu haben. Vielleicht ist auch mein Ansatz
falsch. Auf jeden Fall habe ich hier einen Denkfehler, weil ich nicht genau verstehe
wann welche Objekte und childs erzeugt werden. Leider hilft mir auch die SourceDoku
hier nicht weiter.

Ist keine Rekursion imho. Das Pricelist-Objekt enthält nur eine Referenz auf das Artikel-Objekt von dem aus es erstellt wurde.

[QUOTE=leofonic;155746]Ist keine Rekursion imho. Das Pricelist-Objekt enthält nur eine Referenz auf das Artikel-Objekt von dem aus es erstellt wurde.[/QUOTE]

Wenn das die Staffelpreise sind, macht die Referenz Artikel => Preisliste schon
Sinn, aber nicht andersrum. Und dann wäre es ja besser über eine ID referenziert…

whatever, ich habe das anders gelöst.

Nur zur Erklärung, die Rekursion kam dadurch zustande, daß ich in meinem Artikelobjekt
ein neues Artikelobjekt erzeugt habe. Das ist jedoch nichts Schlimmes.
In OXID (und OOP PHP allgemein) gibt es offenbar häufiger mal rekursive Objekte,
nicht zu verwechseln mit zirkulären Referenzen.

Trotzdem habe ich den Code in die entsprechenden Controller / Components verlagert,
schön nach dem MVC Prinzip.