PayPal\Core\PPXmlMessage::init PHP Method

init() public method

public init ( array $map = [], string $isRoot = true )
$map array intermediate array representation of XML message to deserialize
$isRoot string true if this is a root class for SOAP deserialization
    public function init(array $map = array(), $isRoot = true)
    {
        if ($isRoot) {
            if (stristr($map[0]['name'], ":fault")) {
                throw new PPTransformerException("soapfault");
            } else {
                $map = $map[0]['children'];
            }
        }
        if (empty($map)) {
            return;
        }
        if (($first = reset($map)) && !is_array($first) && !is_numeric(key($map))) {
            parent::init($map, false);
            return;
        }
        $propertiesMap = PPUtils::objectProperties($this);
        $arrayCtr = array();
        foreach ($map as $element) {
            if (empty($element) || empty($element['name'])) {
                continue;
            } elseif (!array_key_exists($property = strtolower($element['name']), $propertiesMap)) {
                if (!preg_match('~^(.+)[\\[\\(](\\d+)[\\]\\)]$~', $property, $m)) {
                    continue;
                }
                $element['name'] = $m[1];
                $element['num'] = $m[2];
            }
            $element['name'] = $propertiesMap[strtolower($element['name'])];
            if (PPUtils::isPropertyArray($this, $element['name'])) {
                $arrayCtr[$element['name']] = isset($arrayCtr[$element['name']]) ? $arrayCtr[$element['name']] + 1 : 0;
                $element['num'] = $arrayCtr[$element['name']];
            }
            if (!empty($element["attributes"]) && is_array($element["attributes"])) {
                foreach ($element["attributes"] as $key => $val) {
                    $element["children"][] = array('name' => $key, 'text' => $val);
                }
                if (isset($element['text'])) {
                    $element["children"][] = array('name' => 'value', 'text' => $element['text']);
                }
                $this->fillRelation($element['name'], $element);
            } elseif (isset($element['text']) && !is_null($element['text'])) {
                if (isset($element['num'])) {
                    $this->{$element['name']}[$element['num']] = $element['text'];
                } else {
                    $this->{$element['name']} = $element['text'];
                }
            } elseif (!empty($element["children"]) && is_array($element["children"])) {
                $this->fillRelation($element['name'], $element);
            }
        }
    }