# SoapClient::SoapClient

(PHP 5, PHP 7)

SoapClient::SoapClient — SoapClient constructor

### Description

public SoapClient::SoapClient ( mixed `$wsdl` [, array `$options` ] )

This constructor creates SoapClient objects in `WSDL` or `non-WSDL` mode.

### Parameters

`wsdl`

  URI of the `WSDL` file or `NULL` if working in `non-WSDL` mode.

  > Note:

  > During development, WSDL caching may be disabled by the use of the `soap.wsdl_cache_ttl` php.ini setting otherwise changes made to the WSDL file will have no effect until `soap.wsdl_cache_ttl` is expired.

`options`

  An array of options. If working in WSDL mode, this parameter is optional. If working in non-WSDL mode, the `location` and `uri` options must be set, where `location` is the URL of the SOAP server to send the request to, and `uri` is the target namespace of the SOAP service.

  The `style` and `use` options only work in non-WSDL mode. In WSDL mode, they come from the WSDL file.

  The `soap_version` option should be one of either `SOAP_1_1` or `SOAP_1_2` to select SOAP 1.1 or 1.2, respectively. If omitted, 1.1 is used.

  For HTTP authentication, the `login` and `password` options can be used to supply credentials. For making an HTTP connection through a proxy server, the options `proxy_host`, `proxy_port`, `proxy_login` and `proxy_password` are also available. For HTTPS client certificate authentication use `local_cert` and `passphrase` options. An authentication may be supplied in the `authentication` option. The authentication method may be either `SOAP_AUTHENTICATION_BASIC` (default) or `SOAP_AUTHENTICATION_DIGEST`.

  The `compression` option allows to use compression of HTTP SOAP requests and responses.

  The `encoding` option defines internal character encoding. This option does not change the encoding of SOAP requests (it is always utf-8), but converts strings into it.

  The `trace` option enables tracing of request so faults can be backtraced. This defaults to `FALSE`

  The `classmap` option can be used to map some WSDL types to PHP classes. This option must be an array with WSDL types as keys and names of PHP classes as values.

  Setting the boolean `trace` option enables use of the methods SoapClient->__getLastRequest, SoapClient->__getLastRequestHeaders, SoapClient->__getLastResponse and SoapClient->__getLastResponseHeaders.

  The `exceptions` option is a boolean value defining whether soap errors throw exceptions of type SoapFault.

  The `connection_timeout` option defines a timeout in seconds for the connection to the SOAP service. This option does not define a timeout for services with slow responses. To limit the time to wait for calls to finish the default_socket_timeout setting is available.

  The `typemap` option is an array of type mappings. Type mapping is an array with keys `type_name`, `type_ns` (namespace URI), `from_xml` (callback accepting one string parameter) and `to_xml` (callback accepting one object parameter).

  The `cache_wsdl` option is one of `WSDL_CACHE_NONE`, `WSDL_CACHE_DISK`, `WSDL_CACHE_MEMORY` or `WSDL_CACHE_BOTH`.

  The `user_agent` option specifies string to use in `User-Agent` header.

  The `stream_context` option is a resource for context.

  The `features` option is a bitmask of `SOAP_SINGLE_ELEMENT_ARRAYS`, `SOAP_USE_XSI_ARRAY_TYPE`, `SOAP_WAIT_ONE_WAY_CALLS`.

  The `keep_alive` option is a boolean value defining whether to send the `Connection: Keep-Alive` header or `Connection: close`.

  The `ssl_method` option is one of `SOAP_SSL_METHOD_TLS`, `SOAP_SSL_METHOD_SSLv2`, `SOAP_SSL_METHOD_SSLv3` or `SOAP_SSL_METHOD_SSLv23`.

### Errors/Exceptions

SoapClient::SoapClient() will generate an `E_ERROR` error if the `location` and `uri` options aren't provided in non-WSDL mode.

A SoapFault exception will be thrown if the `wsdl` URI cannot be loaded.

### Examples

Example #1 SoapClient::SoapClient() example

`<?php
$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("some.wsdl", array('local_cert' => "cert_key.pem"));
$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));
$client = new SoapClient("some.wsdl",
array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));
$client = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));
class MyBook {
public $title;
public $author;
}
$client = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));
?>`