Warning |
This extension is EXPERIMENTAL. The behaviour of this extension -- including the names of its functions and anything else documented about this extension -- may change without notice in a future release of PHP. Use this extension at your own risk. |
SOAP extension can be used to write SOAP Servers and Clients. It supports subsets of SOAP 1.1, SOAP 1.2 and WSDL 1.1 specifications.
The behaviour of these functions is affected by settings in php.ini.
Name | Default | Changeable |
---|---|---|
soap.wsdl_cache_enabled | "1" | PHP_INI_ALL |
soap.wsdl_cache_dir | "/tmp" | PHP_INI_ALL |
soap.wsdl_cache_ttl | 86400 | PHP_INI_ALL |
Constant | Value | Description |
---|---|---|
SOAP_1_1 (integer) | 1 | SOAP version - SOAP 1.1. Can be used as an option in SoapClient and SoapServer constructors. |
SOAP_1_2 (integer) | 2 | SOAP version - SOAP 1.2. Can be used as an option in SoapClient and SoapServer constructors. |
SOAP_FUNCTIONS_ALL (integer) | 999 | Allows to export all defined functions with SoapClient::addFunction |
SOAP_PERSISTENCE_SESSION (integer) | 1 | Allows making class passed to SoapServer::setClass persistent for a PHP session. |
SOAP_PERSISTENCE_REQUEST (integer) | 2 | Allows making class passed to SoapServer::setClass non-persistent for a PHP session. |
SOAP_ENCODED (integer) | 1 | Can be passed as style option to SoapClient constructor in nonWSDL mode. |
SOAP_LITERAL (integer) | 2 | Can be passed as style option to SoapClient constructor in nonWSDL mode. |
SOAP_RPC (integer) | 1 | Can be passed as use option to SoapClient constructor in nonWSDL mode. |
SOAP_DOCUMENT (integer) | 2 | Can be passed as use option to SoapClient constructor in nonWSDL mode. |
SOAP_ACTOR_NEXT (integer) | 1 | Can be passed as actor to SoapHeader constructor. |
SOAP_ACTOR_NONE (integer) | 2 | Can be passed as actor to SoapHeader constructor |
SOAP_ACTOR_UNLIMATERECEIVER (integer) | 3 | Can be passed as actor to SoapHeader constructor |
UNKNOWN_TYPE (integer) | 999998 | Encoding for unknown type. Can be passed to SoapVar constructor. |
XSD_STRING (integer) | 101 | Encoding for standard XMLSchema string type. Can be passed to SoapVar constructor. |
XSD_BOOLEAN (integer) | 102 | Encoding for standard XMLSchema boolen type. Can be passed to SoapVar constructor. |
XSD_DECIMAL (integer) | 103 | Encoding for standard XMLSchema decimal type. Can be passed to SoapVar constructor. |
XSD_FLOAT (integer) | 104 | Encoding for standard XMLSchema float type. Can be passed to SoapVar constructor. |
XSD_DOUBLE (integer) | 105 | Encoding for standard XMLSchema double type. Can be passed to SoapVar constructor. |
XSD_DURATION (integer) | 106 | Encoding for standard XMLSchema duration type. Can be passed to SoapVar constructor. |
XSD_DATETIME (integer) | 107 | Encoding for standard XMLSchema dateTime type. Can be passed to SoapVar constructor. |
XSD_TIME (integer) | 108 | Encoding for standard XMLSchema time type. Can be passed to SoapVar constructor. |
XSD_DATE (integer) | 109 | Encoding for standard XMLSchema data type. Can be passed to SoapVar constructor. |
XSD_GYEARMONTH (integer) | 110 | Encoding for standard XMLSchema gYearMonth type. Can be passed to SoapVar constructor. |
XSD_GYEAR (integer) | 111 | Encoding for standard XMLSchema gYear type. Can be passed to SoapVar constructor. |
XSD_GMONTHDAY (integer) | 112 | Encoding for standard XMLSchema gMonthDay type. Can be passed to SoapVar constructor. |
XSD_GDAY (integer) | 113 | Encoding for standard XMLSchema gDay type. Can be passed to SoapVar constructor. |
XSD_GMONTH (integer) | 114 | Encoding for standard XMLSchema gMonth type. Can be passed to SoapVar constructor. |
XSD_HEXBINARY (integer) | 115 | Encoding for standard XMLSchema hexBinary type. Can be passed to SoapVar constructor. |
XSD_BASE64BINARY (integer) | 116 | Encoding for standard XMLSchema base64Binary type. Can be passed to SoapVar constructor. |
XSD_ANYURI (integer) | 117 | Encoding for standard XMLSchema anyURI type. Can be passed to SoapVar constructor. |
XSD_QNAME (integer) | 118 | Encoding for standard XMLSchema QName type. Can be passed to SoapVar constructor. |
XSD_NOTATION (integer) | 119 | Encoding for standard XMLSchema NOTATION type. Can be passed to SoapVar constructor. |
XSD_NORMALIZEDSTRING (integer) | 120 | Encoding for standard XMLSchema normalizedString type. Can be passed to SoapVar constructor. |
XSD_TOKEN (integer) | 121 | Encoding for standard XMLSchema token type. Can be passed to SoapVar constructor. |
XSD_LANGUAGE (integer) | 122 | Encoding for standard XMLSchema language type. Can be passed to SoapVar constructor. |
XSD_NMTOKEN (integer) | 123 | Encoding for standard XMLSchema NMTOKEN type. Can be passed to SoapVar constructor. |
XSD_NAME (integer) | 124 | Encoding for standard XMLSchema Name type. Can be passed to SoapVar constructor. |
XSD_NCNAME (integer) | 125 | Encoding for standard XMLSchema NCName type. Can be passed to SoapVar constructor. |
XSD_ID (integer) | 126 | Encoding for standard XMLSchema ID type. Can be passed to SoapVar constructor. |
XSD_IDREF (integer) | 127 | Encoding for standard XMLSchema IDREF type. Can be passed to SoapVar constructor. |
XSD_IDREFS (integer) | 128 | Encoding for standard XMLSchema IDREFS type. Can be passed to SoapVar constructor. |
XSD_ENTITY (integer) | 129 | Encoding for standard XMLSchema ENTITY type. Can be passed to SoapVar constructor. |
XSD_ENTITIES (integer) | 130 | Encoding for standard XMLSchema ENTITIES type. Can be passed to SoapVar constructor. |
XSD_INTEGER (integer) | 131 | Encoding for standard XMLSchema integer type. Can be passed to SoapVar constructor. |
XSD_NONPOSITIVEINTEGER (integer) | 132 | Encoding for standard XMLSchema nonPositiveInteger type. Can be passed to SoapVar constructor. |
XSD_NEGATIVEINTEGER (integer) | 133 | Encoding for standard XMLSchema negativeInteger type. Can be passed to SoapVar constructor. |
XSD_LONG (integer) | 134 | Encoding for standard XMLSchema long type. Can be passed to SoapVar constructor. |
XSD_INT (integer) | 135 | Encoding for standard XMLSchema int type. Can be passed to SoapVar constructor. |
XSD_SHORT (integer) | 136 | Encoding for standard XMLSchema short type. Can be passed to SoapVar constructor. |
XSD_BYTE (integer) | 137 | Encoding for standard XMLSchema byte type. Can be passed to SoapVar constructor. |
XSD_NONNEGATIVEINTEGER (integer) | 138 | Encoding for standard XMLSchema nonNegativeInteger type. Can be passed to SoapVar constructor. |
XSD_UNSIGNEDLONG (integer) | 139 | Encoding for standard XMLSchema unsignedLong type. Can be passed to SoapVar constructor. |
XSD_UNSIGNEDINT (integer) | 140 | Encoding for standard XMLSchema unsignedInt type. Can be passed to SoapVar constructor. |
XSD_UNSIGNEDSHORT (integer) | 141 | Encoding for standard XMLSchema unsignedShort type. Can be passed to SoapVar constructor. |
XSD_UNSIGNEDBYTE (integer) | 142 | Encoding for standard XMLSchema unsignedByte type. Can be passed to SoapVar constructor. |
XSD_POSITIVEINTEGER (integer) | 143 | Encoding for standard XMLSchema positiveInteger type. Can be passed to SoapVar constructor. |
XSD_NMTOKENS (integer) | 144 | Encoding for standard XMLSchema NMTOKENS type. Can be passed to SoapVar constructor. |
XSD_ANYTYPE (integer) | 145 | Encoding for standard XMLSchema anyType type. Can be passed to SoapVar constructor. |
SOAP_ENC_ARRAY (integer) | 300 | Encoding for SOAP Array type. Can be passed to SoapVar constructor. |
SOAP_ENC_OBJECT (integer) | 301 | Encoding for SOAP Struct type. Can be passed to SoapVar constructor. |
XSD_1999_TIMEINSTANT (integer) | 401 | Encoding for old XMLSchema timeInstant type. Can be passed to SoapVar constructor. |
XSD_NAMESPACE (string) | The XML Schema namespace. | |
XSD_1999_NAMESPACE (string) | The old XML Schema namespace. |
SoapClient |
SoapServer |
SoapParam |
SoapVar |
SoapHeader |
SoapFault |
SoapClient -- SoapClient constructor |
__call -- calls a SOAP function |
__getLastRequest -- returns last SOAP request |
__getLastResponse -- returns last SOAP response |
__getFunctions -- returns list of SOAP functions |
__getTypes -- returns list of SOAP types |
SoapServer -- SoapServer constructor |
addFunction -- adds one or several functions those will handle SOAP requests |
setClass -- sets class which will handle SOAP requests |
getFunctions -- returns list of defined functions |
setPersistence -- sets persistence mode of SoapServer |
handle -- handles a SOAP request |
SoapParam is a special low-level class for naming parameters and return values in nonWSDL mode. It is just a data holder and it has not any special method except constructor.
SoapParam -- SoapParam constructor |
SoapVar is a special low-level class for encoding parameters and return values in nonWSDL mode. It is just a data holder and it has not any special method except constructor. It is useful when you like to set type property in SOAP request or response.
SoapVar -- SoapVar constructor |
SoapHeader is a special low-level class for passing or returning SOAP headers. It is just a data holder and it has not any special method except constructor.
SoapHeader -- SoapHeader constructor |
SoapFault is a special class that can be used for error reporting during handling of SOAP request. It is derived form standard PHP Exception class, so it can be used to throw exceptions in server side and to catch tham on client side.
SoapFault -- SoapFault constructor |
is_soap_fault -- checks if SOAP call was failed |
SoapClient::SoapClient -- SoapClient constructor |
SoapClient::__call -- calls a SOAP function |
SoapClient::__getLastRequest -- returns last SOAP request |
SoapClient::__getLastResponse -- returns last SOAP response |
SoapClient::__getFunctions -- returns list of SOAP functions |
SoapClient::__getTypes -- returns list of SOAP types |
SoapServer::SoapServer -- SoapServer constructor |
SoapServer::addFunction -- adds one or several functions those will handle SOAP requests |
SoapServer::setClass -- sets class which will handle SOAP requests |
SoapServer::getFunctions -- returns list of defined functions |
SoapServer::setPersistence -- sets persistence mode of SoapServer |
SoapServer::handle -- handles a SOAP request |
SoapParam::SoapParam -- SoapParam constructor |
SoapVar::SoapVar -- SoapVar constructor |
SoapHeader::SoapHeader -- SoapHeader constructor |
SoapFault::SoapFault -- SoapFault constructor |
(PHP 5)
checks if SOAP call was failed
bool is_soap_fault(mixed obj)
This function is useful when you like to check if the SOAP call was failed,
but don't like to use exceptions. To use it you must create SoapClient object
with exceptions option set to zero or false. In this case SOAP method
will return a special SoapFault object which encapsulate the fault details
(faultcode, faultstring, faultactor and faultdetails). If exceptions is
not set then SOAP call will throw an exception on error.
is_soap_fault() functions checks if the given parameter is a SoapFault object.
<?php $client = SoapClient("some.wsdl",array("exceptions"=>0)); $result = $client->SomeFunction(...); if (is_soap_fault($result)) { trigger_error("SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faulstring})", E_ERROR); } ?> |
Standard method that used by SOAP extension for error reporting is excptions.
<?php try { $client = SoapClient("some.wsdl"); $result = $client->SomeFunction(...); } catch (SoapFault $fault) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faulstring})", E_ERROR); } ?> |
(PHP 5)
SoapClient constructor
SoapClient(mixed wsdl [, array options])
The constructor allows creating SoapClient objects in WSDL or nonWSDL mode. The first case requires URI of WSDL file as first parameter and optional options array. The second case requires NULL as first parameter and options array with location and uri options set. Where location is a URL to request and uri is a target namespace of the SOAP service. style and use options has effect only on nonWSDL (in WSDL mode they comes from WSDL file). soap_version option allows to work as SOAP 1.1 or SOAP 1.2 client. Some additional optional options allow using HTTP authentication (login and password) and HTTP connection through proxy server (proxy_host, proxy_port, proxy_login and proxy_password).
$client = new SoapClient("some.wsdl"); $client = new SoapClient("some.wsdl",array('soap_version' => SOAP_1_2)); $client = new SoapClient("some.wsdl",array('login' => "some_name", 'password' => "some_password")); $client = new SoapClient("some.wsdl",array('proxy_host' => "localhost", 'proxy_port' => 8080)); $client = new SoapClient("some.wsdl",array('proxy_host' => "localhost", 'proxy_port' => 8080, 'proxy_login' => "some_name", 'proxy_password' => "some_password")); $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/", 'style' => SOAP_DOCUMENT, 'use' => SOAP_LITERAL)); |
(PHP 5)
calls a SOAP function
mixed __call(string function_name, array arguments, [array options [, mixed input_headers [, mixed &output_headers]]])
This is a low level API function to make a SOAP call. Usually in WSDL mode
you can simple call SOAP functions as SoapClient methods. It is useful for
nonWSDL mode when 'soapaction' is unknown, 'uri' is differ form default or
when ypu like to send and/or receive SOAP Headers. To check if function call
is failed check the result with is_soap_fault() function.
SOAP function may return one or several values. In the first case __call will
return just the value of output parameter, in the second it will return
array with named output parameters.
$client = new SoapClient("some.wsdl"); $client->SomeFunction($a,$b,$c); $client->__call("SomeFunction",array($a,$b,$c)); $client->__call("SomeFunction",array($a,$b,$c), NULL, new SoapHeader(...), $output_headers); $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); $client->SomeFunction($a,$b,$c); $client->__call("SomeFunction",array($a,$b,$c)); $client->__call("SomeFunction",array($a,$b,$c), array('soapaction' => 'some_action', 'uri' => 'some_uri')); |
(PHP 5)
returns last SOAP request
string __getLastRequest()
This function works only with SoapClient which was created with trace option.
<?php $client = SoapClient("some.wsdl", array('trace'=>1)); $result = $client->SomeFunction(...); echo "REQUEST:\n".$client->__getLastRequest()."\n"; ?> |
(PHP 5)
returns last SOAP response
string __getLastResponse()
This function works only with SoapClient which was created with trace option.
<?php $client = SoapClient("some.wsdl", array('trace'=>1)); $result = $client->SomeFunction(...); echo "RESPONSE:\n".$client->__getLastResponse()."\n"; ?> |
(PHP 5)
returns list of SOAP functions
array __getFunctions()
This function works only in WSDL mode.
<?php $client = SoapClient("some.wsdl"); var_dump($client->__getFunctions()); ?> |
(PHP 5)
returns list of SOAP types
array __getTypes()
This function works only in WSDL mode.
<?php $client = SoapClient("some.wsdl"); var_dump($client->__getTypes()); ?> |
(PHP 5)
SoapServer constructor
SoapServer(mixed wsdl [, array options])
It allows creating SoapServer objects in WSDL or nonWSDL mode. In the first case wsdl must be set to URI of WSDL file. In the second wsdl must be set to null and uti option must be set. Additional options allow setting a default SOAP version (soap_version) and actor URI (actor).$server = new SoapServer("some.wsdl"); $server = new SoapServer("some.wsdl",array('soap_version'=>SOAP_1_2)); $server = new SoapServer("some.wsdl",array('actor'=>"http://example.org/ts-tests/C")); $server = new SoapServer(null,array('uri'=>"http://test-uri/")); |
(PHP 5)
adds one or several functions those will handle SOAP requests
void addFunction(mixed functions)
Exports one or more functions for remote clients. To export one function pass function name into functions parameter as string. To export several functions pass an array of function names and to export all functions pass a special constant SOAP_FUNCTIONS_ALL.function func($inputString) { return $inputString; } $server->addFunction("echoString"); function echoTwoStrings($inputString1, $inputString2) { return array("outputString1"=>$inputString1,"outputString2"=>$inputString2); } $server->addFunction(array("echoString","echoTwoStrings")); $server->addFunction(SOAP_FUNCTIONS_ALL); |
(PHP 5)
sets class which will handle SOAP requests
void setClass(string class_name [, ...])
Exports all methods from specified class. Additional parameters will be passed to default class constructor during object creation. The object can be maiden persistent across request for a given PHP session with SoapServer::setPersistence method.$server->setClass("foo"); $server->setClass("foo", $arg1, $arg2); |
(PHP 5)
returns list of defined functions
array getFunctions()
(PHP 5)
sets persistence mode of SoapServer
void setPersistence(int mode)
This function allows saving data between requests in PHP session. It works only with server that exports functions form class (see SoapServer:setCalss).$server->setpersistence(SOAP_PERSISTENCE_SESSION); $server->setpersistence(SOAP_PERSISTENCE_REQUEST); |
(PHP 5)
handles a SOAP request
void handle([string soap_envelope])
It processes a SOAP request, call necessary functions, and send response back. It assumes request in input parameter or in global $HTTP_RAW_POST_DATA PHP variable if the argument is omitted.<?php function test($x) { return $x; } $server = new SoapServer(null,array('uri'=>"http://test-uri/")); $server->addFunction("test"); $server->handle(); ?> |
(PHP 5)
SoapParam constructor
SoapParam(mixed data, string name)
SoapParam is a special low-level class for naming parameters and return values in nonWSDL mode. It is just a data holder and it has not any special method except constructor. The constructor takes data to pass or return and name. It is possible to pass parameter directly as PHP value, but in this case it will be named as paramN and SOAP Service may not understand it.
<?php $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); $client->SomeFunction(new SoapParam($a,"a"), new SoapParam($b,"b"), new SoapParam($c,"c")); ?> |
(PHP 5)
SoapVar constructor
SoapVar(mixed data, int encoding [, string type [, string type_ns [, string name [, string name_ns]]]])
SoapVar is a special low-level class for encoding parameters and return values in nonWSDL mode. It is just a data holder and it has not any special method except constructor. It is useful when you like to set type property in SOAP request or response. The constructor takes data to pass or return, encoding ID to encode it (see XSD_... constants) and as option type name and namespace and value name and namespace.
<?php class SOAPStruct { function SOAPStruct($s, $i, $f) { $this->varString = $s; $this->varInt = $i; $this->varFloat = $f; } } $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); $struct = new SOAPStruct('arg',34,325.325); $soapstruct = new SoapVar($struct,SOAP_ENC_OBJECT,"SOAPStruct","http://soapinterop.org/xsd"); $client->echoStruct(new SoapParam($soapstruct, "inputStruct")); ?> |
(PHP 5)
SoapHeader constructor
SoapHeader(string name_ns, string name [, mixed data [, bool must_understand [, mixed actor]]])
SoapHeader is a special low-level class for passing or returning SOAP headers. It is just a data holder and it has not any special method except constructor. It can be used in SoapClient::__call method to pass SOAP header or in SOAP header handler to return header in SOAP response. name_ns and name are namespace and name of the SOAP header element. data is a SOAP header's content. It can be a PHP value or SoapVar object. must_understand and actor are values for mustUnderstand and actor attributes of this SOAP Header element.
<?php $client = new SoapClient(null,array('location' => "http://localhost/soap.php", 'uri' => "http://test-uri/")); $client->__call("echoVoid",NULL,NULL, new SoapHeader('http://soapinterop.org/echoheader/', 'echoMeStringRequest', 'hello world')); ?> |
(PHP 5)
SoapFault constructor
SoapFault(string faultcode, string faultstring [, string faultactor [, mixed details [, string faultname [, mixed headerfault]]]])
This class is useful when you like to send SOAP fault response from PHP handler.<?php function test($x) { return new SoapFault("Server","Some error message"); } $server = new SoapServer(null,array('uri'=>"http://test-uri/")); $server->addFunction("test"); $server->handle(); ?> |
It is possible to use PHP exception mechanism to throw SOAP Fault.
<?php function test($x) { throw new SoapFault("Server","Some error message"); } $server = new SoapServer(null,array('uri'=>"http://test-uri/")); $server->addFunction("test"); $server->handle(); ?> |