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.