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

📄 nusoap.php

📁 GForge 3.0 协作开发平台 支持CVS, mailing lists, bug tracking, message boards/forums, task management, perman
💻 PHP
📖 第 1 页 / 共 5 页
字号:
	* serialize the schema	*	* @access   public	*/	function serializeSchema(){		$schemaPrefix = $this->getPrefixFromNamespace($this->XMLSchemaVersion);		$xml = '';		// complex types		foreach($this->complexTypes as $typeName => $attrs){			$contentStr = '';			// serialize child elements			if(count($attrs['elements']) > 0){				foreach($attrs['elements'] as $element => $eParts){					if(isset($eParts['ref'])){						$contentStr .= "<element ref=\"$element\"/>";					} else {						$contentStr .= "<element name=\"$element\" type=\"$eParts[type]\"/>";					}				}			}			// attributes			if(count($attrs['attrs']) >= 1){				foreach($attrs['attrs'] as $attr => $aParts){					$contentStr .= '<attribute ref="'.$aParts['ref'].'"';					if(isset($aParts['wsdl:arrayType'])){						$contentStr .= ' wsdl:arrayType="'.$aParts['wsdl:arrayType'].'"';					}					$contentStr .= '/>';				}			}			// if restriction			if( isset($attrs['restrictionBase']) && $attrs['restrictionBase'] != ''){				$contentStr = "<$schemaPrefix:restriction base=\"".$attrs['restrictionBase']."\">".$contentStr."</$schemaPrefix:restriction>";			}			// "all" compositor obviates complex/simple content			if(isset($attrs['compositor']) && $attrs['compositor'] == 'all'){				$contentStr = "<$schemaPrefix:$attrs[compositor]>".$contentStr."</$schemaPrefix:$attrs[compositor]>";			}			// complex or simple content			elseif( count($attrs['elements']) > 0 || count($attrs['attrs']) > 0){				$contentStr = "<$schemaPrefix:complexContent>".$contentStr."</$schemaPrefix:complexContent>";			}			// compositors			if(isset($attrs['compositor']) && $attrs['compositor'] != '' && $attrs['compositor'] != 'all'){				$contentStr = "<$schemaPrefix:$attrs[compositor]>".$contentStr."</$schemaPrefix:$attrs[compositor]>";			}			// finalize complex type			if($contentStr != ''){				$contentStr = "<$schemaPrefix:complexType name=\"$typeName\">".$contentStr."</$schemaPrefix:complexType>";			} else {				$contentStr = "<$schemaPrefix:complexType name=\"$typeName\"/>";			}			$xml .= $contentStr;		}		// elements		if(isset($this->elements) && count($this->elements) > 0){			foreach($this->elements as $element => $eParts){				$xml .= "<$schemaPrefix:element name=\"$element\" type=\"".$eParts['type']."\"/>";			}		}		// attributes		if(isset($this->attributes) && count($this->attributes) > 0){			foreach($this->attributes as $attr => $aParts){				$xml .= "<$schemaPrefix:attribute name=\"$attr\" type=\"".$aParts['type']."\"/>";			}		}		// finish 'er up		$xml = "<$schemaPrefix:schema xmlns=\"$this->XMLSchemaVersion\" targetNamespace=\"$this->schemaTargetNamespace\">".$xml."</$schemaPrefix:schema>";		return $xml;	}	/**	* expands a qualified name	*	* @param    string $string qname	* @return	string expanded qname	* @access   private	*/	function expandQname($qname){		// get element prefix		if(strpos($qname,':') && !ereg('^http://',$qname)){			// get unqualified name			$name = substr(strstr($qname,':'),1);			// get ns prefix			$prefix = substr($qname,0,strpos($qname,':'));			if(isset($this->namespaces[$prefix])){				return $this->namespaces[$prefix].':'.$name;			} else {				return $qname;			}		} else {			return $qname;		}	}	/**	* adds debug data to the clas level debug string	*	* @param    string $string debug data	* @access   private	*/	function xdebug($string){		$this->debug(' xmlschema: '.$string);	}    /**    * get the PHP type of a user defined type in the schema    * PHP type is kind of a misnomer since it actually returns 'struct' for assoc. arrays    * returns false if no type exists, or not w/ the given namespace    * else returns a string that is either a native php type, or 'struct'    *    * @param string $type, name of defined type    * @param string $ns, namespace of type    * @return mixed    * @access public    */	function getPHPType($type,$ns){		global $typemap;		if(isset($typemap[$ns][$type])){			//print "found type '$type' and ns $ns in typemap<br />";			return $typemap[$ns][$type];		} elseif(isset($this->complexTypes[$type])){			//print "getting type '$type' and ns $ns from complexTypes array<br />";			return $this->complexTypes[$type]['phpType'];		}		return false;	}    /**    * returns the local part of a prefixed string    * returns the original string, if not prefixed    *    * @param string    * @return string    * @access public    */	function getLocalPart($str){		if($sstr = strrchr($str,':')){			// get unqualified name			return substr( $sstr, 1 );		} else {			return $str;		}	}	/**    * returns the prefix part of a prefixed string    * returns false, if not prefixed    *    * @param string    * @return mixed    * @access public    */	function getPrefix($str){		if($pos = strrpos($str,':')){			// get prefix			return substr($str,0,$pos);		}		return false;	}	/**    * pass it a prefix, it returns a namespace	* returns false if no namespace registered with the given prefix    *    * @param string    * @return mixed    * @access public    */	function getNamespaceFromPrefix($prefix){		if(isset($this->namespaces[$prefix])){			return $this->namespaces[$prefix];		}		//$this->setError("No namespace registered for prefix '$prefix'");		return false;	}	/**    * returns the prefix for a given namespace (or prefix)    * or false if no prefixes registered for the given namespace    *    * @param string    * @return mixed    * @access public    */	function getPrefixFromNamespace($ns){		foreach($this->namespaces as $p => $n){			if($ns == $n || $ns == $p){			    $this->usedNamespaces[$p] = $n;				return $p;			}		}		return false;	}	/**    * returns an array of information about a given type    * returns false if no type exists by the given name    *	*	 typeDef = array(	*	 'elements' => array(), // refs to elements array	*	'restrictionBase' => '',	*	'phpType' => '',	*	'order' => '(sequence|all)',	*	'attrs' => array() // refs to attributes array	*	)    *    * @param string    * @return mixed    * @access public    */	function getTypeDef($type){		if(isset($this->complexTypes[$type])){			return $this->complexTypes[$type];		} elseif(isset($this->elements[$type])){			return $this->elements[$type];		} elseif(isset($this->attributes[$type])){			return $this->attributes[$type];		}		return false;	}	/**    * returns a sample serialization of a given type, or false if no type by the given name    *    * @param string $type, name of type    * @return mixed    * @access public    */    function serializeTypeDef($type){    	//print "in sTD() for type $type<br />";	if($typeDef = $this->getTypeDef($type)){		$str .= '<'.$type;	    if(is_array($typeDef['attrs'])){		foreach($attrs as $attName => $data){		    $str .= " $attName=\"{type = ".$data['type']."}\"";		}	    }	    $str .= " xmlns=\"".$this->schema['targetNamespace']."\"";	    if(count($typeDef['elements']) > 0){		$str .= ">";		foreach($typeDef['elements'] as $element => $eData){		    $str .= $this->serializeTypeDef($element);		}		$str .= "</$type>";	    } elseif($typeDef['typeClass'] == 'element') {		$str .= "></$type>";	    } else {		$str .= "/>";	    }			return $str;	}    	return false;    }    /**    * returns HTML form elements that allow a user    * to enter values for creating an instance of the given type.    *    * @param string $name, name for type instance    * @param string $type, name of type    * @return string    * @access public	*/	function typeToForm($name,$type){		// get typedef		if($typeDef = $this->getTypeDef($type)){			// if struct			if($typeDef['phpType'] == 'struct'){				$buffer .= '<table>';				foreach($typeDef['elements'] as $child => $childDef){					$buffer .= "					<tr><td align='right'>$childDef[name] (type: ".$this->getLocalPart($childDef['type'])."):</td>					<td><input type='text' name='parameters[".$name."][$childDef[name]]'></td></tr>";				}				$buffer .= '</table>';			// if array			} elseif($typeDef['phpType'] == 'array'){				$buffer .= '<table>';				for($i=0;$i < 3; $i++){					$buffer .= "					<tr><td align='right'>array item (type: $typeDef[arrayType]):</td>					<td><input type='text' name='parameters[".$name."][]'></td></tr>";				}				$buffer .= '</table>';			// if scalar			} else {				$buffer .= "<input type='text' name='parameters[$name]'>";			}		} else {			$buffer .= "<input type='text' name='parameters[$name]'>";		}		return $buffer;	}		/**	* adds an XML Schema complex type to the WSDL types	* 	* example: array	* 	* addType(	* 	'ArrayOfstring',	* 	'complexType',	* 	'array',	* 	'',	* 	'SOAP-ENC:Array',	* 	array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]'),	* 	'xsd:string'	* );	* 	* example: PHP associative array ( SOAP Struct )	* 	* addType(	* 	'SOAPStruct',	* 	'complexType',	* 	'struct',	* 	'all',	* 	array('myVar'=> array('name'=>'myVar','type'=>'string')	* );	* 	* @param name	* @param typeClass (complexType|simpleType|attribute)	* @param phpType: currently supported are array and struct (php assoc array)	* @param compositor (all|sequence|choice)	* @param restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)	* @param elements = array ( name = array(name=>'',type=>'') )	* @param attrs = array(	* 	array(	*		'ref' => "http://schemas.xmlsoap.org/soap/encoding/:arrayType",	*		"http://schemas.xmlsoap.org/wsdl/:arrayType" => "string[]"	* 	)	* )	* @param arrayType: namespace:name (http://www.w3.org/2001/XMLSchema:string)	*	*/	function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType=''){		$this->complexTypes[$name] = array(	    'name'		=> $name,	    'typeClass'	=> $typeClass,	    'phpType'	=> $phpType,		'compositor'=> $compositor,	    'restrictionBase' => $restrictionBase,		'elements'	=> $elements,	    'attrs'		=> $attrs,	    'arrayType'	=> $arrayType		);	}}?><?php/*** for creating serializable abstractions of native PHP types* NOTE: this is only really used when WSDL is not available.** @author   Dietrich Ayala <dietrich@ganx4.com>* @version  v 0.6.3* @access   public*/class soapval extends nusoap_base {	/**	* constructor	*	* @param    string $name optional name	* @param    string $type optional type name	* @param	mixed $value optional value	* @param	string $namespace optional namespace of value	* @param	string $type_namespace optional namespace of type	* @param	array $attributes associative array of attributes to add to element serialization	* @access   public	*/  	function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {		$this->name = $name;		$this->value = $value;		$this->type = $type;		$this->element_ns = $element_ns;		$this->type_ns = $type_ns;		$this->attributes = $attributes;    }	/**	* return serialized value	*	* @return	string XML data	* @access   private	*/	function serialize($use='encoded') {		return $this->serialize_val($this->value,$this->name,$this->type,$this->element_ns,$this->type_ns,$this->attributes,$use);    }	/**	* decodes a soapval object into a PHP native type	*	* @param	object $soapval optional SOAPx4 soapval object, else uses self	* @return	mixed	* @access   public	*/	function decode(){		return $this->value;	}}?><?php/*** transport class for sending/receiving data via HTTP and HTTPS* NOTE: PHP must be compiled with the CURL extension for HTTPS support** @author   Dietrich Ayala <dietrich@ganx4.com>* @version  v 0.6.3* @access public*/class soap_transport_http extends nusoap_base {	var $username = '';	var $password = '';	var $url = '';    var $proxyhost = '';    var $proxyport = '';	var $scheme = '';	var $protocol_version = '1.0';	var $encoding = '';	var $outgoing_headers = array();	var $incoming_headers = array();	var $outgoing_payload = '';	var $incoming_payload = '';		/**

⌨️ 快捷键说明

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