Public Member Functions | |
debug ($string) | |
adds debug data to the class level debug string | |
expandEntities ($val) | |
expands entities, e.g. | |
getError () | |
returns error string if present | |
setError ($str) | |
sets error string | |
isArraySimpleOrStruct ($val) | |
detect if array is a simple array or a struct (associative array) | |
serialize_val ($val, $name=false, $type=false, $name_ns=false, $type_ns=false, $attributes=false, $use='encoded') | |
serializes PHP values in accordance w/ section 5. | |
serializeEnvelope ($body, $headers=false, $namespaces=array(), $style='rpc', $use='encoded') | |
serialize message | |
formatDump ($str) | |
contractQname ($qname) | |
contracts a qualified name | |
expandQname ($qname) | |
expands a qualified name | |
getLocalPart ($str) | |
returns the local part of a prefixed string returns the original string, if not prefixed | |
getPrefix ($str) | |
returns the prefix part of a prefixed string returns false, if not prefixed | |
getNamespaceFromPrefix ($prefix) | |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix | |
getPrefixFromNamespace ($ns) | |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace | |
varDump ($data) | |
debug ($string) | |
adds debug data to the class level debug string | |
expandEntities ($val) | |
expands entities, e.g. | |
getError () | |
returns error string if present | |
setError ($str) | |
sets error string | |
isArraySimpleOrStruct ($val) | |
detect if array is a simple array or a struct (associative array) | |
serialize_val ($val, $name=false, $type=false, $name_ns=false, $type_ns=false, $attributes=false, $use='encoded') | |
serializes PHP values in accordance w/ section 5. | |
serializeEnvelope ($body, $headers=false, $namespaces=array(), $style='rpc', $use='encoded') | |
serialize message | |
formatDump ($str) | |
contractQname ($qname) | |
contracts a qualified name | |
expandQname ($qname) | |
expands a qualified name | |
getLocalPart ($str) | |
returns the local part of a prefixed string returns the original string, if not prefixed | |
getPrefix ($str) | |
returns the prefix part of a prefixed string returns false, if not prefixed | |
getNamespaceFromPrefix ($prefix) | |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix | |
getPrefixFromNamespace ($ns) | |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace | |
varDump ($data) | |
debug ($string) | |
adds debug data to the class level debug string | |
expandEntities ($val) | |
expands entities, e.g. | |
getError () | |
returns error string if present | |
setError ($str) | |
sets error string | |
isArraySimpleOrStruct ($val) | |
detect if array is a simple array or a struct (associative array) | |
serialize_val ($val, $name=false, $type=false, $name_ns=false, $type_ns=false, $attributes=false, $use='encoded') | |
serializes PHP values in accordance w/ section 5. | |
serializeEnvelope ($body, $headers=false, $namespaces=array(), $style='rpc', $use='encoded') | |
serialize message | |
formatDump ($str) | |
contractQname ($qname) | |
contracts a qualified name | |
expandQname ($qname) | |
expands a qualified name | |
getLocalPart ($str) | |
returns the local part of a prefixed string returns the original string, if not prefixed | |
getPrefix ($str) | |
returns the prefix part of a prefixed string returns false, if not prefixed | |
getNamespaceFromPrefix ($prefix) | |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix | |
getPrefixFromNamespace ($ns) | |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace | |
varDump ($data) | |
Data Fields | |
$title = 'NuSOAP' | |
$version = '0.6.7' | |
$revision = '$Revision: 11808 $' | |
$error_str = false | |
$debug_str = '' | |
$charencoding = true | |
$XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema' | |
$soap_defencoding = 'UTF-8' | |
$namespaces | |
$usedNamespaces = array() | |
$typemap | |
$xmlEntities |
public
public
public
Definition at line 61 of file nusoap.php.
nusoap_base::contractQname | ( | $ | qname | ) |
contracts a qualified name
string | $string qname |
Definition at line 458 of file nusoap.php.
References getPrefixFromNamespace().
{ // get element namespace //$this->xdebug("Contract $qname"); if (strrpos($qname, ':')) { // get unqualified name $name = substr($qname, strrpos($qname, ':') + 1); // get ns $ns = substr($qname, 0, strrpos($qname, ':')); $p = $this->getPrefixFromNamespace($ns); if ($p) { return $p . ':' . $name; } return $qname; } else { return $qname; } }
nusoap_base::contractQname | ( | $ | qname | ) |
contracts a qualified name
string | $string qname |
Definition at line 458 of file nusoap.php.
References getPrefixFromNamespace().
{ // get element namespace //$this->xdebug("Contract $qname"); if (strrpos($qname, ':')) { // get unqualified name $name = substr($qname, strrpos($qname, ':') + 1); // get ns $ns = substr($qname, 0, strrpos($qname, ':')); $p = $this->getPrefixFromNamespace($ns); if ($p) { return $p . ':' . $name; } return $qname; } else { return $qname; } }
nusoap_base::contractQname | ( | $ | qname | ) |
contracts a qualified name
string | $string qname |
Definition at line 458 of file class.nusoap_base.php.
References getPrefixFromNamespace().
{ // get element namespace //$this->xdebug("Contract $qname"); if (strrpos($qname, ':')) { // get unqualified name $name = substr($qname, strrpos($qname, ':') + 1); // get ns $ns = substr($qname, 0, strrpos($qname, ':')); $p = $this->getPrefixFromNamespace($ns); if ($p) { return $p . ':' . $name; } return $qname; } else { return $qname; } }
nusoap_base::debug | ( | $ | string | ) |
adds debug data to the class level debug string
string | $string debug data private |
Definition at line 144 of file nusoap.php.
Referenced by soap_parser::buildVal(), soap_client::call(), soap_transport_http::connect(), soap_transport_http::decodeChunked(), soapclientmime::getHTTPBody(), soap_client::getOperationData(), soap_transport_http::getResponse(), soap_server::invoke_method(), soap_server::parse_http_headers(), soap_server::parse_request(), XMLSchema::parseFile(), soapclientmime::parseResponse(), soap_client::parseResponse(), XMLSchema::parseString(), wsdl::parseWSDL(), soap_client::send(), soap_transport_http::send(), soap_server::send_response(), soap_transport_http::sendRequest(), soap_server::serialize_return(), serialize_val(), wsdl::serializeParameters(), wsdl::serializeRPCParameters(), wsdl::serializeType(), soap_transport_http::setCredentials(), soap_client::soap_client(), soap_parser::soap_parser(), soap_server::soap_server(), soap_transport_http::soap_transport_http(), soap_parser::start_element(), wsdl::start_element(), wsdl::wsdl(), XMLSchema::xdebug(), and XMLSchema::XMLSchema().
{
$this->debug_str .= get_class($this).": $string\n";
}
nusoap_base::debug | ( | $ | string | ) |
adds debug data to the class level debug string
string | $string debug data private |
Definition at line 144 of file class.nusoap_base.php.
{
$this->debug_str .= get_class($this).": $string\n";
}
nusoap_base::debug | ( | $ | string | ) |
adds debug data to the class level debug string
string | $string debug data private |
Definition at line 144 of file nusoap.php.
{
$this->debug_str .= get_class($this).": $string\n";
}
nusoap_base::expandEntities | ( | $ | val | ) |
expands entities, e.g.
changes '<' to '<'.
string | $val The string in which to expand entities. private |
Definition at line 154 of file nusoap.php.
Referenced by serialize_val(), and wsdl::serializeType().
{ if ($this->charencoding) { $val = str_replace('&', '&', $val); $val = str_replace("'", ''', $val); $val = str_replace('"', '"', $val); $val = str_replace('<', '<', $val); $val = str_replace('>', '>', $val); } return $val; }
nusoap_base::expandEntities | ( | $ | val | ) |
expands entities, e.g.
changes '<' to '<'.
string | $val The string in which to expand entities. private |
Definition at line 154 of file nusoap.php.
{ if ($this->charencoding) { $val = str_replace('&', '&', $val); $val = str_replace("'", ''', $val); $val = str_replace('"', '"', $val); $val = str_replace('<', '<', $val); $val = str_replace('>', '>', $val); } return $val; }
nusoap_base::expandEntities | ( | $ | val | ) |
expands entities, e.g.
changes '<' to '<'.
string | $val The string in which to expand entities. private |
Definition at line 154 of file class.nusoap_base.php.
{ if ($this->charencoding) { $val = str_replace('&', '&', $val); $val = str_replace("'", ''', $val); $val = str_replace('"', '"', $val); $val = str_replace('<', '<', $val); $val = str_replace('>', '>', $val); } return $val; }
nusoap_base::expandQname | ( | $ | qname | ) |
expands a qualified name
string | $string qname |
Definition at line 483 of file nusoap.php.
Referenced by wsdl::addComplexType(), wsdl::addSimpleType(), XMLSchema::schemaStartElement(), and wsdl::start_element().
{ // 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; } }
nusoap_base::expandQname | ( | $ | qname | ) |
expands a qualified name
string | $string qname |
Definition at line 483 of file nusoap.php.
{ // 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; } }
nusoap_base::expandQname | ( | $ | qname | ) |
expands a qualified name
string | $string qname |
Definition at line 483 of file class.nusoap_base.php.
{ // 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; } }
nusoap_base::formatDump | ( | $ | str | ) |
Definition at line 446 of file nusoap.php.
{
$str = htmlspecialchars($str);
return nl2br($str);
}
nusoap_base::formatDump | ( | $ | str | ) |
Definition at line 446 of file nusoap.php.
{
$str = htmlspecialchars($str);
return nl2br($str);
}
nusoap_base::formatDump | ( | $ | str | ) |
Definition at line 446 of file class.nusoap_base.php.
{
$str = htmlspecialchars($str);
return nl2br($str);
}
nusoap_base::getError | ( | ) |
returns error string if present
Definition at line 171 of file nusoap.php.
{ if($this->error_str != ''){ return $this->error_str; } return false; }
nusoap_base::getError | ( | ) |
returns error string if present
Definition at line 171 of file class.nusoap_base.php.
{ if($this->error_str != ''){ return $this->error_str; } return false; }
nusoap_base::getError | ( | ) |
returns error string if present
Definition at line 171 of file nusoap.php.
Referenced by soap_client::call(), wsdl::parseWSDL(), and soap_client::send().
{ if($this->error_str != ''){ return $this->error_str; } return false; }
nusoap_base::getLocalPart | ( | $ | str | ) |
returns the local part of a prefixed string returns the original string, if not prefixed
string |
Definition at line 508 of file nusoap.php.
{ if($sstr = strrchr($str,':')){ // get unqualified name return substr( $sstr, 1 ); } else { return $str; } }
nusoap_base::getLocalPart | ( | $ | str | ) |
returns the local part of a prefixed string returns the original string, if not prefixed
string |
Definition at line 508 of file nusoap.php.
Referenced by wsdl::addOperation(), XMLSchema::schemaStartElement(), wsdl::serialize(), wsdl::serializeType(), soap_parser::start_element(), and wsdl::start_element().
{ if($sstr = strrchr($str,':')){ // get unqualified name return substr( $sstr, 1 ); } else { return $str; } }
nusoap_base::getLocalPart | ( | $ | str | ) |
returns the local part of a prefixed string returns the original string, if not prefixed
string |
Definition at line 508 of file class.nusoap_base.php.
{ if($sstr = strrchr($str,':')){ // get unqualified name return substr( $sstr, 1 ); } else { return $str; } }
nusoap_base::getNamespaceFromPrefix | ( | $ | prefix | ) |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix
string |
Definition at line 541 of file nusoap.php.
{ if (isset($this->namespaces[$prefix])) { return $this->namespaces[$prefix]; } //$this->setError("No namespace registered for prefix '$prefix'"); return false; }
nusoap_base::getNamespaceFromPrefix | ( | $ | prefix | ) |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix
string |
Definition at line 541 of file nusoap.php.
Referenced by wsdl::addOperation(), XMLSchema::schemaStartElement(), and wsdl::serializeType().
{ if (isset($this->namespaces[$prefix])) { return $this->namespaces[$prefix]; } //$this->setError("No namespace registered for prefix '$prefix'"); return false; }
nusoap_base::getNamespaceFromPrefix | ( | $ | prefix | ) |
pass it a prefix, it returns a namespace returns false if no namespace registered with the given prefix
string |
Definition at line 541 of file class.nusoap_base.php.
{ if (isset($this->namespaces[$prefix])) { return $this->namespaces[$prefix]; } //$this->setError("No namespace registered for prefix '$prefix'"); return false; }
nusoap_base::getPrefix | ( | $ | str | ) |
returns the prefix part of a prefixed string returns false, if not prefixed
string |
Definition at line 525 of file nusoap.php.
References $pos.
nusoap_base::getPrefix | ( | $ | str | ) |
returns the prefix part of a prefixed string returns false, if not prefixed
string |
Definition at line 525 of file class.nusoap_base.php.
References $pos.
nusoap_base::getPrefix | ( | $ | str | ) |
returns the prefix part of a prefixed string returns false, if not prefixed
string |
Definition at line 525 of file nusoap.php.
References $pos.
Referenced by wsdl::addOperation(), XMLSchema::schemaStartElement(), wsdl::serialize(), wsdl::serializeType(), and soap_parser::start_element().
nusoap_base::getPrefixFromNamespace | ( | $ | ns | ) |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace
string |
Definition at line 557 of file nusoap.php.
{ foreach ($this->namespaces as $p => $n) { if ($ns == $n || $ns == $p) { $this->usedNamespaces[$p] = $n; return $p; } } return false; }
nusoap_base::getPrefixFromNamespace | ( | $ | ns | ) |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace
string |
Definition at line 557 of file class.nusoap_base.php.
{ foreach ($this->namespaces as $p => $n) { if ($ns == $n || $ns == $p) { $this->usedNamespaces[$p] = $n; return $p; } } return false; }
nusoap_base::getPrefixFromNamespace | ( | $ | ns | ) |
returns the prefix for a given namespace (or prefix) or false if no prefixes registered for the given namespace
string |
Definition at line 557 of file nusoap.php.
Referenced by contractQname(), XMLSchema::schemaStartElement(), wsdl::serialize(), XMLSchema::serializeSchema(), wsdl::serializeType(), and wsdl::start_element().
{ foreach ($this->namespaces as $p => $n) { if ($ns == $n || $ns == $p) { $this->usedNamespaces[$p] = $n; return $p; } } return false; }
nusoap_base::isArraySimpleOrStruct | ( | $ | val | ) |
detect if array is a simple array or a struct (associative array)
$val | The PHP array |
Definition at line 195 of file nusoap.php.
Referenced by serialize_val(), wsdl::serializeParameters(), wsdl::serializeRPCParameters(), and wsdl::serializeType().
{ $keyList = array_keys($val); foreach ($keyList as $keyListValue) { if (!is_int($keyListValue)) { return 'arrayStruct'; } } return 'arraySimple'; }
nusoap_base::isArraySimpleOrStruct | ( | $ | val | ) |
detect if array is a simple array or a struct (associative array)
$val | The PHP array |
Definition at line 195 of file class.nusoap_base.php.
{ $keyList = array_keys($val); foreach ($keyList as $keyListValue) { if (!is_int($keyListValue)) { return 'arrayStruct'; } } return 'arraySimple'; }
nusoap_base::isArraySimpleOrStruct | ( | $ | val | ) |
detect if array is a simple array or a struct (associative array)
$val | The PHP array |
Definition at line 195 of file nusoap.php.
{ $keyList = array_keys($val); foreach ($keyList as $keyListValue) { if (!is_int($keyListValue)) { return 'arrayStruct'; } } return 'arraySimple'; }
nusoap_base::serialize_val | ( | $ | val, | |
$ | name = false , |
|||
$ | type = false , |
|||
$ | name_ns = false , |
|||
$ | type_ns = false , |
|||
$ | attributes = false , |
|||
$ | use = 'encoded' | |||
) |
serializes PHP values in accordance w/ section 5.
Type information is not serialized if $use == 'literal'.
Definition at line 212 of file nusoap.php.
References $type, debug(), expandEntities(), isArraySimpleOrStruct(), and serialize_val().
{ if(is_object($val) && get_class($val) == 'soapval'){ return $val->serialize($use); } $this->debug( "in serialize_val: $val, $name, $type, $name_ns, $type_ns, $attributes, $use"); // if no name, use item $name = (!$name|| is_numeric($name)) ? 'soapVal' : $name; // if name has ns, add ns prefix to name $xmlns = ''; if($name_ns){ $prefix = 'nu'.rand(1000,9999); $name = $prefix.':'.$name; $xmlns .= " xmlns:$prefix=\"$name_ns\""; } // if type is prefixed, create type prefix if($type_ns != '' && $type_ns == $this->namespaces['xsd']){ // need to fix this. shouldn't default to xsd if no ns specified // w/o checking against typemap $type_prefix = 'xsd'; } elseif($type_ns){ $type_prefix = 'ns'.rand(1000,9999); $xmlns .= " xmlns:$type_prefix=\"$type_ns\""; } // serialize attributes if present $atts = ''; if($attributes){ foreach($attributes as $k => $v){ $atts .= " $k=\"$v\""; } } // serialize if an xsd built-in primitive type if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){ if (is_bool($val)) { if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } } else if (is_string($val)) { $val = $this->expandEntities($val); } if ($use == 'literal') { return "<$name$xmlns>$val</$name>"; } else { return "<$name$xmlns xsi:type=\"xsd:$type\">$val</$name>"; } } // detect type and serialize $xml = ''; switch(true) { case ($type == '' && is_null($val)): if ($use == 'literal') { // TODO: depends on nillable $xml .= "<$name$xmlns/>"; } else { $xml .= "<$name$xmlns xsi:nil=\"true\"/>"; } break; case (is_bool($val) || $type == 'boolean'): if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>"; } break; case (is_int($val) || is_long($val) || $type == 'int'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>"; } break; case (is_float($val)|| is_double($val) || $type == 'float'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>"; } break; case (is_string($val) || $type == 'string'): $val = $this->expandEntities($val); if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>"; } break; case is_object($val): $name = get_class($val); foreach(get_object_vars($val) as $k => $v){ $pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use); } $xml .= '<'.$name.'>'.$pXml.'</'.$name.'>'; break; break; case (is_array($val) || $type): // detect if struct or array $valueType = $this->isArraySimpleOrStruct($val); if($valueType=='arraySimple' || ereg('^ArrayOf',$type)){ $i = 0; if(is_array($val) && count($val)> 0){ foreach($val as $v){ if(is_object($v) && get_class($v) == 'soapval'){ $tt_ns = $v->type_ns; $tt = $v->type; } elseif (is_array($v)) { $tt = $this->isArraySimpleOrStruct($v); } else { $tt = gettype($v); } $array_types[$tt] = 1; $xml .= $this->serialize_val($v,'item',false,false,false,false,$use); ++$i; } if(count($array_types) > 1){ $array_typename = 'xsd:ur-type'; } elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) { if ($tt == 'integer') { $tt = 'int'; } $array_typename = 'xsd:'.$tt; } elseif(isset($tt) && $tt == 'arraySimple'){ $array_typename = 'SOAP-ENC:Array'; } elseif(isset($tt) && $tt == 'arrayStruct'){ $array_typename = 'unnamed_struct_use_soapval'; } else { // if type is prefixed, create type prefix if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){ $array_typename = 'xsd:' . $tt; } elseif ($tt_ns) { $tt_prefix = 'ns' . rand(1000, 9999); $array_typename = "$tt_prefix:$tt"; $xmlns .= " xmlns:$tt_prefix=\"$tt_ns\""; } else { $array_typename = $tt; } } $array_type = $i; if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\""; } // empty array } else { if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\""; } } $xml = "<$name$xmlns$type_str$atts>".$xml."</$name>"; } else { // got a struct if(isset($type) && isset($type_prefix)){ $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = ''; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>"; } else { $xml .= "<$name$xmlns$type_str$atts>"; } foreach($val as $k => $v){ // Apache Map if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') { $xml .= '<item>'; $xml .= $this->serialize_val($k,'key',false,false,false,false,$use); $xml .= $this->serialize_val($v,'value',false,false,false,false,$use); $xml .= '</item>'; } else { $xml .= $this->serialize_val($v,$k,false,false,false,false,$use); } } $xml .= "</$name>"; } break; default: $xml .= 'not detected, got '.gettype($val).' for '.$val; break; } return $xml; }
nusoap_base::serialize_val | ( | $ | val, | |
$ | name = false , |
|||
$ | type = false , |
|||
$ | name_ns = false , |
|||
$ | type_ns = false , |
|||
$ | attributes = false , |
|||
$ | use = 'encoded' | |||
) |
serializes PHP values in accordance w/ section 5.
Type information is not serialized if $use == 'literal'.
Definition at line 212 of file class.nusoap_base.php.
References $type, debug(), expandEntities(), isArraySimpleOrStruct(), and serialize_val().
{ if(is_object($val) && get_class($val) == 'soapval'){ return $val->serialize($use); } $this->debug( "in serialize_val: $val, $name, $type, $name_ns, $type_ns, $attributes, $use"); // if no name, use item $name = (!$name|| is_numeric($name)) ? 'soapVal' : $name; // if name has ns, add ns prefix to name $xmlns = ''; if($name_ns){ $prefix = 'nu'.rand(1000,9999); $name = $prefix.':'.$name; $xmlns .= " xmlns:$prefix=\"$name_ns\""; } // if type is prefixed, create type prefix if($type_ns != '' && $type_ns == $this->namespaces['xsd']){ // need to fix this. shouldn't default to xsd if no ns specified // w/o checking against typemap $type_prefix = 'xsd'; } elseif($type_ns){ $type_prefix = 'ns'.rand(1000,9999); $xmlns .= " xmlns:$type_prefix=\"$type_ns\""; } // serialize attributes if present $atts = ''; if($attributes){ foreach($attributes as $k => $v){ $atts .= " $k=\"$v\""; } } // serialize if an xsd built-in primitive type if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){ if (is_bool($val)) { if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } } else if (is_string($val)) { $val = $this->expandEntities($val); } if ($use == 'literal') { return "<$name$xmlns>$val</$name>"; } else { return "<$name$xmlns xsi:type=\"xsd:$type\">$val</$name>"; } } // detect type and serialize $xml = ''; switch(true) { case ($type == '' && is_null($val)): if ($use == 'literal') { // TODO: depends on nillable $xml .= "<$name$xmlns/>"; } else { $xml .= "<$name$xmlns xsi:nil=\"true\"/>"; } break; case (is_bool($val) || $type == 'boolean'): if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>"; } break; case (is_int($val) || is_long($val) || $type == 'int'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>"; } break; case (is_float($val)|| is_double($val) || $type == 'float'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>"; } break; case (is_string($val) || $type == 'string'): $val = $this->expandEntities($val); if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>"; } break; case is_object($val): $name = get_class($val); foreach(get_object_vars($val) as $k => $v){ $pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use); } $xml .= '<'.$name.'>'.$pXml.'</'.$name.'>'; break; break; case (is_array($val) || $type): // detect if struct or array $valueType = $this->isArraySimpleOrStruct($val); if($valueType=='arraySimple' || ereg('^ArrayOf',$type)){ $i = 0; if(is_array($val) && count($val)> 0){ foreach($val as $v){ if(is_object($v) && get_class($v) == 'soapval'){ $tt_ns = $v->type_ns; $tt = $v->type; } elseif (is_array($v)) { $tt = $this->isArraySimpleOrStruct($v); } else { $tt = gettype($v); } $array_types[$tt] = 1; $xml .= $this->serialize_val($v,'item',false,false,false,false,$use); ++$i; } if(count($array_types) > 1){ $array_typename = 'xsd:ur-type'; } elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) { if ($tt == 'integer') { $tt = 'int'; } $array_typename = 'xsd:'.$tt; } elseif(isset($tt) && $tt == 'arraySimple'){ $array_typename = 'SOAP-ENC:Array'; } elseif(isset($tt) && $tt == 'arrayStruct'){ $array_typename = 'unnamed_struct_use_soapval'; } else { // if type is prefixed, create type prefix if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){ $array_typename = 'xsd:' . $tt; } elseif ($tt_ns) { $tt_prefix = 'ns' . rand(1000, 9999); $array_typename = "$tt_prefix:$tt"; $xmlns .= " xmlns:$tt_prefix=\"$tt_ns\""; } else { $array_typename = $tt; } } $array_type = $i; if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\""; } // empty array } else { if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\""; } } $xml = "<$name$xmlns$type_str$atts>".$xml."</$name>"; } else { // got a struct if(isset($type) && isset($type_prefix)){ $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = ''; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>"; } else { $xml .= "<$name$xmlns$type_str$atts>"; } foreach($val as $k => $v){ // Apache Map if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') { $xml .= '<item>'; $xml .= $this->serialize_val($k,'key',false,false,false,false,$use); $xml .= $this->serialize_val($v,'value',false,false,false,false,$use); $xml .= '</item>'; } else { $xml .= $this->serialize_val($v,$k,false,false,false,false,$use); } } $xml .= "</$name>"; } break; default: $xml .= 'not detected, got '.gettype($val).' for '.$val; break; } return $xml; }
nusoap_base::serialize_val | ( | $ | val, | |
$ | name = false , |
|||
$ | type = false , |
|||
$ | name_ns = false , |
|||
$ | type_ns = false , |
|||
$ | attributes = false , |
|||
$ | use = 'encoded' | |||
) |
serializes PHP values in accordance w/ section 5.
Type information is not serialized if $use == 'literal'.
Definition at line 212 of file nusoap.php.
References $type, debug(), expandEntities(), and isArraySimpleOrStruct().
Referenced by soap_client::call(), soapval::serialize(), soap_server::serialize_return(), serialize_val(), and wsdl::serializeType().
{ if(is_object($val) && get_class($val) == 'soapval'){ return $val->serialize($use); } $this->debug( "in serialize_val: $val, $name, $type, $name_ns, $type_ns, $attributes, $use"); // if no name, use item $name = (!$name|| is_numeric($name)) ? 'soapVal' : $name; // if name has ns, add ns prefix to name $xmlns = ''; if($name_ns){ $prefix = 'nu'.rand(1000,9999); $name = $prefix.':'.$name; $xmlns .= " xmlns:$prefix=\"$name_ns\""; } // if type is prefixed, create type prefix if($type_ns != '' && $type_ns == $this->namespaces['xsd']){ // need to fix this. shouldn't default to xsd if no ns specified // w/o checking against typemap $type_prefix = 'xsd'; } elseif($type_ns){ $type_prefix = 'ns'.rand(1000,9999); $xmlns .= " xmlns:$type_prefix=\"$type_ns\""; } // serialize attributes if present $atts = ''; if($attributes){ foreach($attributes as $k => $v){ $atts .= " $k=\"$v\""; } } // serialize if an xsd built-in primitive type if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){ if (is_bool($val)) { if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } } else if (is_string($val)) { $val = $this->expandEntities($val); } if ($use == 'literal') { return "<$name$xmlns>$val</$name>"; } else { return "<$name$xmlns xsi:type=\"xsd:$type\">$val</$name>"; } } // detect type and serialize $xml = ''; switch(true) { case ($type == '' && is_null($val)): if ($use == 'literal') { // TODO: depends on nillable $xml .= "<$name$xmlns/>"; } else { $xml .= "<$name$xmlns xsi:nil=\"true\"/>"; } break; case (is_bool($val) || $type == 'boolean'): if ($type == 'boolean') { $val = $val ? 'true' : 'false'; } elseif (! $val) { $val = 0; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>"; } break; case (is_int($val) || is_long($val) || $type == 'int'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>"; } break; case (is_float($val)|| is_double($val) || $type == 'float'): if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>"; } break; case (is_string($val) || $type == 'string'): $val = $this->expandEntities($val); if ($use == 'literal') { $xml .= "<$name$xmlns $atts>$val</$name>"; } else { $xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>"; } break; case is_object($val): $name = get_class($val); foreach(get_object_vars($val) as $k => $v){ $pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use); } $xml .= '<'.$name.'>'.$pXml.'</'.$name.'>'; break; break; case (is_array($val) || $type): // detect if struct or array $valueType = $this->isArraySimpleOrStruct($val); if($valueType=='arraySimple' || ereg('^ArrayOf',$type)){ $i = 0; if(is_array($val) && count($val)> 0){ foreach($val as $v){ if(is_object($v) && get_class($v) == 'soapval'){ $tt_ns = $v->type_ns; $tt = $v->type; } elseif (is_array($v)) { $tt = $this->isArraySimpleOrStruct($v); } else { $tt = gettype($v); } $array_types[$tt] = 1; $xml .= $this->serialize_val($v,'item',false,false,false,false,$use); ++$i; } if(count($array_types) > 1){ $array_typename = 'xsd:ur-type'; } elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) { if ($tt == 'integer') { $tt = 'int'; } $array_typename = 'xsd:'.$tt; } elseif(isset($tt) && $tt == 'arraySimple'){ $array_typename = 'SOAP-ENC:Array'; } elseif(isset($tt) && $tt == 'arrayStruct'){ $array_typename = 'unnamed_struct_use_soapval'; } else { // if type is prefixed, create type prefix if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){ $array_typename = 'xsd:' . $tt; } elseif ($tt_ns) { $tt_prefix = 'ns' . rand(1000, 9999); $array_typename = "$tt_prefix:$tt"; $xmlns .= " xmlns:$tt_prefix=\"$tt_ns\""; } else { $array_typename = $tt; } } $array_type = $i; if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\""; } // empty array } else { if ($use == 'literal') { $type_str = ''; } else if (isset($type) && isset($type_prefix)) { $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = " xsi:type=\"SOAP-ENC:Array\""; } } $xml = "<$name$xmlns$type_str$atts>".$xml."</$name>"; } else { // got a struct if(isset($type) && isset($type_prefix)){ $type_str = " xsi:type=\"$type_prefix:$type\""; } else { $type_str = ''; } if ($use == 'literal') { $xml .= "<$name$xmlns $atts>"; } else { $xml .= "<$name$xmlns$type_str$atts>"; } foreach($val as $k => $v){ // Apache Map if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') { $xml .= '<item>'; $xml .= $this->serialize_val($k,'key',false,false,false,false,$use); $xml .= $this->serialize_val($v,'value',false,false,false,false,$use); $xml .= '</item>'; } else { $xml .= $this->serialize_val($v,$k,false,false,false,false,$use); } } $xml .= "</$name>"; } break; default: $xml .= 'not detected, got '.gettype($val).' for '.$val; break; } return $xml; }
nusoap_base::serializeEnvelope | ( | $ | body, | |
$ | headers = false , |
|||
$ | namespaces = array() , |
|||
$ | style = 'rpc' , |
|||
$ | use = 'encoded' | |||
) |
serialize message
string | body | |
string | headers optional | |
array | namespaces optional | |
string | style optional (rpc|document) | |
string | use optional (encoded|literal) |
Definition at line 417 of file class.nusoap_base.php.
References $namespaces.
{ // TODO: add an option to automatically run utf8_encode on $body and $headers // if $this->soap_defencoding is UTF-8. Not doing this automatically allows // one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1 // serialize namespaces $ns_string = ''; foreach(array_merge($this->namespaces,$namespaces) as $k => $v){ $ns_string .= " xmlns:$k=\"$v\""; } if($style == 'rpc' && $use == 'encoded') { $ns_string = ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"' . $ns_string; } // serialize headers if($headers){ $headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>"; } // serialize envelope return '<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">". '<SOAP-ENV:Envelope'.$ns_string.">". $headers. "<SOAP-ENV:Body>". $body. "</SOAP-ENV:Body>". "</SOAP-ENV:Envelope>"; }
nusoap_base::serializeEnvelope | ( | $ | body, | |
$ | headers = false , |
|||
$ | namespaces = array() , |
|||
$ | style = 'rpc' , |
|||
$ | use = 'encoded' | |||
) |
serialize message
string | body | |
string | headers optional | |
array | namespaces optional | |
string | style optional (rpc|document) | |
string | use optional (encoded|literal) |
Definition at line 417 of file nusoap.php.
References $namespaces.
Referenced by soap_client::call(), and soap_server::serialize_return().
{ // TODO: add an option to automatically run utf8_encode on $body and $headers // if $this->soap_defencoding is UTF-8. Not doing this automatically allows // one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1 // serialize namespaces $ns_string = ''; foreach(array_merge($this->namespaces,$namespaces) as $k => $v){ $ns_string .= " xmlns:$k=\"$v\""; } if($style == 'rpc' && $use == 'encoded') { $ns_string = ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"' . $ns_string; } // serialize headers if($headers){ $headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>"; } // serialize envelope return '<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">". '<SOAP-ENV:Envelope'.$ns_string.">". $headers. "<SOAP-ENV:Body>". $body. "</SOAP-ENV:Body>". "</SOAP-ENV:Envelope>"; }
nusoap_base::serializeEnvelope | ( | $ | body, | |
$ | headers = false , |
|||
$ | namespaces = array() , |
|||
$ | style = 'rpc' , |
|||
$ | use = 'encoded' | |||
) |
serialize message
string | body | |
string | headers optional | |
array | namespaces optional | |
string | style optional (rpc|document) | |
string | use optional (encoded|literal) |
Definition at line 417 of file nusoap.php.
References $namespaces.
{ // TODO: add an option to automatically run utf8_encode on $body and $headers // if $this->soap_defencoding is UTF-8. Not doing this automatically allows // one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1 // serialize namespaces $ns_string = ''; foreach(array_merge($this->namespaces,$namespaces) as $k => $v){ $ns_string .= " xmlns:$k=\"$v\""; } if($style == 'rpc' && $use == 'encoded') { $ns_string = ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"' . $ns_string; } // serialize headers if($headers){ $headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>"; } // serialize envelope return '<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">". '<SOAP-ENV:Envelope'.$ns_string.">". $headers. "<SOAP-ENV:Body>". $body. "</SOAP-ENV:Body>". "</SOAP-ENV:Envelope>"; }
nusoap_base::setError | ( | $ | str | ) |
sets error string
Definition at line 184 of file nusoap.php.
Referenced by soap_client::call(), soap_transport_http::connect(), soap_transport_http::getResponse(), XMLSchema::parseFile(), soapclientmime::parseResponse(), soap_client::parseResponse(), XMLSchema::parseString(), wsdl::parseWSDL(), soap_client::send(), soap_transport_http::send(), soap_transport_http::sendRequest(), wsdl::serializeParameters(), wsdl::serializeRPCParameters(), wsdl::serializeType(), soap_client::soap_client(), and soap_parser::soap_parser().
{ $this->error_str = $str; }
nusoap_base::setError | ( | $ | str | ) |
sets error string
Definition at line 184 of file nusoap.php.
{ $this->error_str = $str; }
nusoap_base::setError | ( | $ | str | ) |
sets error string
Definition at line 184 of file class.nusoap_base.php.
{ $this->error_str = $str; }
nusoap_base::varDump | ( | $ | data | ) |
Definition at line 567 of file nusoap.php.
References $data.
{ ob_start(); var_dump($data); $ret_val = ob_get_contents(); ob_end_clean(); return $ret_val; }
nusoap_base::varDump | ( | $ | data | ) |
Definition at line 567 of file nusoap.php.
References $data.
Referenced by XMLSchema::addComplexType(), XMLSchema::addSimpleType(), soap_server::invoke_method(), XMLSchema::schemaStartElement(), soap_server::serialize_return(), wsdl::serializeParameters(), wsdl::serializeRPCParameters(), and wsdl::serializeType().
{ ob_start(); var_dump($data); $ret_val = ob_get_contents(); ob_end_clean(); return $ret_val; }
nusoap_base::varDump | ( | $ | data | ) |
Definition at line 567 of file class.nusoap_base.php.
References $data.
{ ob_start(); var_dump($data); $ret_val = ob_get_contents(); ob_end_clean(); return $ret_val; }
nusoap_base::$charencoding = true |
Definition at line 70 of file nusoap.php.
nusoap_base::$debug_str = '' |
Definition at line 67 of file nusoap.php.
nusoap_base::$error_str = false |
Reimplemented in soap_client.
Definition at line 66 of file nusoap.php.
nusoap_base::$namespaces |
array( 'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/', 'xsd' => 'http://www.w3.org/2001/XMLSchema', 'xsi' => 'http://www.w3.org/2001/XMLSchema-instance', 'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/', 'si' => 'http://soapinterop.org/xsd')
Reimplemented in soap_parser.
Definition at line 95 of file nusoap.php.
Referenced by serializeEnvelope(), and XMLSchema::XMLSchema().
nusoap_base::$revision = '$Revision: 11808 $' |
Definition at line 65 of file nusoap.php.
nusoap_base::$soap_defencoding = 'UTF-8' |
Definition at line 86 of file nusoap.php.
nusoap_base::$title = 'NuSOAP' |
Definition at line 63 of file nusoap.php.
nusoap_base::$typemap |
array( 'http://www.w3.org/2001/XMLSchema' => array( 'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double', 'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'', 'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string', 'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'', 'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer', 'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer', 'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''), 'http://www.w3.org/1999/XMLSchema' => array( 'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double', 'float'=>'double','dateTime'=>'string', 'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'), 'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'), 'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'), 'http://xml.apache.org/xml-soap' => array('Map') )
Definition at line 110 of file nusoap.php.
nusoap_base::$usedNamespaces = array() |
Definition at line 101 of file nusoap.php.
Referenced by soap_client::call().
nusoap_base::$version = '0.6.7' |
Definition at line 64 of file nusoap.php.
nusoap_base::$xmlEntities |
array('quot' => '"','amp' => '&', 'lt' => '<','gt' => '>','apos' => "'")
Definition at line 135 of file nusoap.php.
nusoap_base::$XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema' |
Definition at line 78 of file nusoap.php.