IXR_Message::tag_close( $parser,  $tag )

In this article

Source

function tag_close($parser, $tag)
{
    $valueFlag = false;
    switch($tag) {
        case 'int':
        case 'i4':
            $value = (int)trim($this->_currentTagContents);
            $valueFlag = true;
            break;
        case 'double':
            $value = (double)trim($this->_currentTagContents);
            $valueFlag = true;
            break;
        case 'string':
            $value = (string)trim($this->_currentTagContents);
            $valueFlag = true;
            break;
        case 'dateTime.iso8601':
            $value = new IXR_Date(trim($this->_currentTagContents));
            $valueFlag = true;
            break;
        case 'value':
            // "If no type is indicated, the type is string."
            if (trim($this->_currentTagContents) != '') {
                $value = (string)$this->_currentTagContents;
                $valueFlag = true;
            }
            break;
        case 'boolean':
            $value = (boolean)trim($this->_currentTagContents);
            $valueFlag = true;
            break;
        case 'base64':
            $value = base64_decode($this->_currentTagContents);
            $valueFlag = true;
            break;
            /* Deal with stacks of arrays and structs */
        case 'data':
        case 'struct':
            $value = array_pop($this->_arraystructs);
            array_pop($this->_arraystructstypes);
            $valueFlag = true;
            break;
        case 'member':
            array_pop($this->_currentStructName);
            break;
        case 'name':
            $this->_currentStructName[] = trim($this->_currentTagContents);
            break;
        case 'methodName':
            $this->methodName = trim($this->_currentTagContents);
            break;
    }

    if ($valueFlag) {
        if (count($this->_arraystructs) > 0) {
            // Add value to struct or array
            if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
                // Add to struct
                $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value;
            } else {
                // Add to array
                $this->_arraystructs[count($this->_arraystructs)-1][] = $value;
            }
        } else {
            // Just add as a parameter
            $this->params[] = $value;
        }
    }
    $this->_currentTagContents = '';
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.