⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wsdl.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name] = array_merge($this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name], $attrs);                    } else {                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name] = $attrs;                    }                    if (array_key_exists('message', $attrs)) {                        $qn =& new QName($attrs['message']);                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name]['message'] = $qn->name;                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name]['namespace'] = $qn->ns;                    }                }                break;            case 'documentation':                break;            default:                break;            }            break;        case 'binding':            $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL;            switch ($ns) {            case SCHEMA_SOAP:                // this deals with wsdl section 3 soap binding                switch ($qname->name) {                case 'binding':                    // sect 3.3                    // soap:binding, attributes: transport(required), style(optional, default = document)                    // if style is missing, it is assumed to be 'document'                    if (!isset($attrs['style'])) {                        $attrs['style'] = 'document';                    }                    $this->wsdl->bindings[$this->currentBinding] = array_merge($this->wsdl->bindings[$this->currentBinding], $attrs);                    break;                case 'operation':                    // sect 3.4                    // soap:operation, attributes: soapAction(required), style(optional, default = soap:binding:style)                    if (!isset($attrs['style'])) {                        $attrs['style'] = $this->wsdl->bindings[$this->currentBinding]['style'];                    }                    if (isset($this->wsdl->bindings[$this->currentBinding]['operations'][$this->currentOperation])) {                        $this->wsdl->bindings[$this->currentBinding]['operations'][$this->currentOperation] = array_merge($this->wsdl->bindings[$this->currentBinding]['operations'][$this->currentOperation], $attrs);                    } else {                        $this->wsdl->bindings[$this->currentBinding]['operations'][$this->currentOperation] = $attrs;                    }                    break;                case 'body':                    // sect 3.5                    // soap:body attributes:                    // part - optional.  listed parts must appear in body, missing means all parts appear in body                    // use - required. encoded|literal                    // encodingStyle - optional.  space seperated list of encodings (uri's)                    $this->wsdl->bindings[$this->currentBinding]                                    ['operations'][$this->currentOperation][$this->opStatus] = $attrs;                    break;                case 'fault':                    // sect 3.6                    // soap:fault attributes: name use  encodingStyle namespace                    $this->wsdl->bindings[$this->currentBinding]                                    ['operations'][$this->currentOperation][$this->opStatus] = $attrs;                    break;                case 'header':                    // sect 3.7                    // soap:header attributes: message part use encodingStyle namespace                    $this->wsdl->bindings[$this->currentBinding]                                    ['operations'][$this->currentOperation][$this->opStatus]['headers'][] = $attrs;                    break;                case 'headerfault':                    // sect 3.7                    // soap:header attributes: message part use encodingStyle namespace                    $header = count($this->wsdl->bindings[$this->currentBinding]                                    ['operations'][$this->currentOperation][$this->opStatus]['headers'])-1;                    $this->wsdl->bindings[$this->currentBinding]                                    ['operations'][$this->currentOperation][$this->opStatus]['headers'][$header]['fault'] = $attrs;                    break;                case 'documentation':                    break;                default:                    // error!  not a valid element inside binding                    break;                }                break;            case SCHEMA_WSDL:                // XXX verify correct namespace                // for now, default is the 'wsdl' namespace                // other possible namespaces include smtp, http, etc. for alternate bindings                switch ($qname->name) {                case 'operation':                    // sect 2.5                    // wsdl:operation attributes: name                    $this->currentOperation = $attrs['name'];                    break;                case 'output':                case 'input':                case 'fault':                    // sect 2.5                    // wsdl:input attributes: name                    $this->opStatus = $qname->name;                    break;                case 'documentation':                    break;                default:                    break;                }                break;            case SCHEMA_WSDL_HTTP:                switch ($qname->name) {                case 'binding':                    // sect 4.4                    // http:binding attributes: verb                    // parent: wsdl:binding                    $this->wsdl->bindings[$this->currentBinding] = array_merge($this->wsdl->bindings[$this->currentBinding], $attrs);                    break;                case 'operation':                    // sect 4.5                    // http:operation attributes: location                    // parent: wsdl:operation                    $this->wsdl->bindings[$this->currentBinding]['operations']                                                        [$this->currentOperation] = $attrs;                    break;                case 'urlEncoded':                    // sect 4.6                    // http:urlEncoded attributes: location                    // parent: wsdl:input wsdl:output etc.                    $this->wsdl->bindings[$this->currentBinding]['operations'][$this->opStatus]                                                        [$this->currentOperation]['uri'] = 'urlEncoded';                    break;                case 'urlReplacement':                    // sect 4.7                    // http:urlReplacement attributes: location                    // parent: wsdl:input wsdl:output etc.                    $this->wsdl->bindings[$this->currentBinding]['operations'][$this->opStatus]                                                        [$this->currentOperation]['uri'] = 'urlReplacement';                    break;                case 'documentation':                    break;                default:                    // error                    break;                }            case SCHEMA_MIME:                // sect 5                // all mime parts are children of wsdl:input, wsdl:output, etc.                // unsuported as of yet                switch ($qname->name) {                case 'content':                    // sect 5.3 mime:content                    // <mime:content part="nmtoken"? type="string"?/>                    // part attribute only required if content is child of multipart related,                    //        it contains the name of the part                    // type attribute contains the mime type                case 'multipartRelated':                    // sect 5.4 mime:multipartRelated                case 'part':                case 'mimeXml':                    // sect 5.6 mime:mimeXml                    // <mime:mimeXml part="nmtoken"?/>                    //                case 'documentation':                    break;                default:                    // error                    break;                }            case SCHEMA_DIME:                // DIME is defined in:                // http://gotdotnet.com/team/xml_wsspecs/dime/WSDL-Extension-for-DIME.htm                // all DIME parts are children of wsdl:input, wsdl:output, etc.                // unsuported as of yet                switch ($qname->name) {                case 'message':                    // sect 4.1 dime:message                    // appears in binding section                    $this->wsdl->bindings[$this->currentBinding]['dime'] = $attrs;                    break;                default:                    break;                }            default:                break;            }            break;        case 'service':            $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL;            switch ($qname->name) {            case 'port':                // sect 2.6 wsdl:port attributes: name binding                $this->currentPort = $attrs['name'];                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort] = $attrs;                // XXX hack to deal with binding namespaces                $qn =& new QName($attrs['binding']);                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['binding'] = $qn->name;                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['namespace'] = $qn->ns;                break;            case 'address':                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['address'] = $attrs;                // what TYPE of port is it?  SOAP or HTTP?                $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL;                switch ($ns) {                case SCHEMA_WSDL_HTTP:                    $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['type']='http';                    break;                case SCHEMA_SOAP:                    $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['type']='soap';                    break;                default:                    // Shouldn't happen, we'll assume SOAP.                    $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['type']='soap';                }                break;            case 'documentation':                break;            default:                break;            }        }        // Top level elements found under wsdl:definitions.        switch ($qname->name) {        case 'import':            // sect 2.1.1 wsdl:import attributes: namespace location            if ((isset($attrs['location']) || isset($attrs['schemaLocation'])) &&                !isset($this->wsdl->imports[$attrs['namespace']])) {                $uri = isset($attrs['location']) ? $attrs['location'] : $attrs['schemaLocation'];                $location = @parse_url($uri);                if (!isset($location['scheme'])) {                    $base = @parse_url($this->uri);                    $uri = $this->mergeUrl($base, $uri);                }                $this->wsdl->imports[$attrs['namespace']] = $attrs;                $import_parser_class = get_class($this);                $import_parser =& new $import_parser_class($uri, $this->wsdl, $this->docs);                if ($import_parser->fault) {                    unset($this->wsdl->imports[$attrs['namespace']]);                    return false;                }                $this->currentImport = $attrs['namespace'];            }            // Continue on to the 'types' case - lack of break; is            // intentional.        case 'types':            // sect 2.2 wsdl:types            $this->status = 'types';            break;        case 'schema':            // We can hit this at the top level if we've been asked to            // import an XSD file.            if (!empty($attrs['targetNamespace'])) {                $this->schema = $this->wsdl->getNamespaceAttributeName($attrs['targetNamespace']);            } else {                $this->schema = $this->wsdl->getNamespaceAttributeName($this->wsdl->tns);            }            $this->wsdl->complexTypes[$this->schema] = array();            $this->wsdl->elements[$this->schema] = array();            $this->schema_stack[] = $qname->name;            $this->status = 'types';            break;        case 'message':            // sect 2.3 wsdl:message attributes: name children:wsdl:part            $this->status = 'message';            if (isset($attrs['name'])) {                $this->currentMessage = $attrs['name'];                $this->wsdl->messages[$this->currentMessage] = array();            }            break;        case 'portType':            // sect 2.4 wsdl:portType            // attributes: name            // children: wsdl:operation            $this->status = 'portType';            $this->currentPortType = $attrs['name'];            $this->wsdl->portTypes[$this->currentPortType] = array();            break;        case 'binding':            // sect 2.5 wsdl:binding attributes: name type            // children: wsdl:operation soap:binding http:binding            if ($qname->ns && $qname->ns != $this->tns) {                break;            }            $this->status = 'binding';            $this->currentBinding = $attrs['name'];            $qn =& new QName($attrs['type']);            $this->wsdl->bindings[$this->currentBinding]['type'] = $qn->name;            $this->wsdl->bindings[$this->currentBinding]['namespace'] = $qn->ns;            break;        case 'service':            // sect 2.7 wsdl:service attributes: name children: ports          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -