public function visitOrder(ShopgateOrder $o) { // get properties $properties = $o->buildProperties(); // iterate the simple variables $properties = $this->iterateSimpleProperties($properties); // visit invoice address if (!empty($properties['invoice_address']) && $properties['invoice_address'] instanceof ShopgateAddress) { $properties['invoice_address']->accept($this); $properties['invoice_address'] = $this->array; } // visit delivery address if (!empty($properties['delivery_address']) && $properties['delivery_address'] instanceof ShopgateAddress) { $properties['delivery_address']->accept($this); $properties['delivery_address'] = $this->array; } // visit shipping info if (!empty($properties['shipping_infos']) && $properties['shipping_infos'] instanceof ShopgateShippingInfo) { $properties['shipping_infos']->accept($this); $properties['shipping_infos'] = $this->array; } // visit the items and delivery notes arrays $properties['custom_fields'] = $this->iterateObjectList($properties['custom_fields']); $properties['external_coupons'] = $this->iterateObjectList($properties['external_coupons']); $properties['shopgate_coupons'] = $this->iterateObjectList($properties['shopgate_coupons']); $properties['items'] = $this->iterateObjectList($properties['items']); $properties['delivery_notes'] = $this->iterateObjectList($properties['delivery_notes']); // set last value to converted array $this->array = $properties; }