/** * Construct XML elements with attributes from an associative array. * * @access protected * @static * @param object $writer XMLWriter object * @param array $aData contains attributes and values * @return none */ private static function _createElementsFromArray(&$writer, $aData) { if (!is_array($aData)) { $writer->text($aData); return; } foreach ($aData as $index => $element) { // convert the style back to gateway format $elementName = Braintree_Util::camelCaseToDelimiter($index, '-'); // handle child elements $writer->startElement($elementName); if (is_array($element)) { if (array_key_exists(0, $element) || empty($element)) { $writer->writeAttribute('type', 'array'); foreach ($element as $ignored => $itemInArray) { $writer->startElement('item'); self::_createElementsFromArray($writer, $itemInArray); $writer->endElement(); } } else { self::_createElementsFromArray($writer, $element); } } else { // generate attributes as needed $attribute = self::_generateXmlAttribute($element); if (is_array($attribute)) { $writer->writeAttribute($attribute[0], $attribute[1]); $element = $attribute[2]; } $writer->text($element); } $writer->endElement(); } }
private function _underscoreKeys($array) { foreach ($array as $key => $value) { $newKey = Braintree_Util::camelCaseToDelimiter($key, '_'); unset($array[$key]); if (is_array($value)) { $array[$newKey] = $this->_underscoreKeys($value); } else { $array[$newKey] = $value; } } return $array; }