CI_Xmlrpcs::parseRequest PHP Метод

parseRequest() публичный Метод

Parse Server Request
public parseRequest ( $data = '' ) : object
Результат object xmlrpc response
    public function parseRequest($data = '')
    {
        //-------------------------------------
        //  Get Data
        //-------------------------------------
        if ($data === '') {
            $CI =& get_instance();
            if ($CI->input->method() === 'post') {
                $data = $CI->input->raw_input_stream;
            }
        }
        //-------------------------------------
        //  Set up XML Parser
        //-------------------------------------
        $parser = xml_parser_create($this->xmlrpc_defencoding);
        $parser_object = new XML_RPC_Message('filler');
        $pname = (string) $parser;
        $parser_object->xh[$pname] = array('isf' => 0, 'isf_reason' => '', 'params' => array(), 'stack' => array(), 'valuestack' => array(), 'method' => '');
        xml_set_object($parser, $parser_object);
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, TRUE);
        xml_set_element_handler($parser, 'open_tag', 'closing_tag');
        xml_set_character_data_handler($parser, 'character_data');
        //xml_set_default_handler($parser, 'default_handler');
        //-------------------------------------
        // PARSE + PROCESS XML DATA
        //-------------------------------------
        if (!xml_parse($parser, $data, 1)) {
            // Return XML error as a faultCode
            $r = new XML_RPC_Response(0, $this->xmlrpcerrxml + xml_get_error_code($parser), sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser)));
            xml_parser_free($parser);
        } elseif ($parser_object->xh[$pname]['isf']) {
            return new XML_RPC_Response(0, $this->xmlrpcerr['invalid_return'], $this->xmlrpcstr['invalid_return']);
        } else {
            xml_parser_free($parser);
            $m = new XML_RPC_Message($parser_object->xh[$pname]['method']);
            $plist = '';
            for ($i = 0, $c = count($parser_object->xh[$pname]['params']); $i < $c; $i++) {
                if ($this->debug === TRUE) {
                    $plist .= $i . ' - ' . print_r(get_object_vars($parser_object->xh[$pname]['params'][$i]), TRUE) . ";\n";
                }
                $m->addParam($parser_object->xh[$pname]['params'][$i]);
            }
            if ($this->debug === TRUE) {
                echo "<pre>---PLIST---\n" . $plist . "\n---PLIST END---\n\n</pre>";
            }
            $r = $this->_execute($m);
        }
        //-------------------------------------
        // SET DEBUGGING MESSAGE
        //-------------------------------------
        if ($this->debug === TRUE) {
            $this->debug_msg = "<!-- DEBUG INFO:\n\n" . $plist . "\n END DEBUG-->\n";
        }
        return $r;
    }