(PHP 5, PHP 7, PHP 8)
SoapClient::__construct — Конструктор SoapClient
$wsdl
, array $options
= [])
Конструктор создаёт объекты SoapClient
в режиме WSDL
или не-WSDL
.
wsdl
URI файла WSDL
или null
, если
работа происходит в режиме не-WSDL
.
Замечание:
Во время разработки кеширование WSDL можно отключить, используя настройку
soap.wsdl_cache_ttl
в php.ini, иначе изменения, сделанные в WSDL файле, не будут иметь эффекта до тех пор, пока не истечёт время, указанное вsoap.wsdl_cache_ttl
.
options
Массив настроек. Если работа происходит в режиме WSDL, то этот параметр необязательный.
Если в не-WSDL режиме, то должны быть установлены опции
location
и uri
,
где location
- URL сервера SOAP, к которому отправляется запрос, а
uri
- целевое пространство имён SOAP-сервиса.
Опции style
и use
используются только в не-WSDL режиме. В режиме WSDL они поступают из WSDL-файла.
Опция soap_version
должна быть равна
либо SOAP_1_1
, либо SOAP_1_2
,
чтобы использовать соответственно SOAP 1.1 или 1.2. Если параметр пропущен,
то используется 1.1.
Для HTTP-аутентификации могут быть использованы опции
login
и password
для предоставления учётных данных.
Для реализации HTTP-соединения через прокси-сервер доступны настройки
proxy_host
, proxy_port
,
proxy_login
и proxy_password
.
Для аутентификации сертификата клиента HTTPS используются
опции local_cert
и passphrase
.
Аутентификация может быть предоставлена в опции authentication
.
Метод аутентификации может быть
SOAP_AUTHENTICATION_BASIC
(по умолчанию) или
SOAP_AUTHENTICATION_DIGEST
.
Опция compression
позволяет использовать
сжатие запросов и ответов HTTP SOAP.
Опция encoding
определяет внутреннюю кодировку.
Опция не меняет кодировку SOAP-запросов (она всегда utf-8),
но преобразует строки в неё.
Опция trace
включает отслеживание запроса и в случае ошибки
можно получить обратную трассировку. По умолчанию имеет значение false
.
Опция classmap
может использоваться для сопоставления
некоторых WSDL-типов с PHP-классами. Опция должна представлять собой массив,
в качестве ключей которого указаны WSDL-типы, а в качестве значений - имена классов PHP.
Установленная булевая опция trace
позволяет использовать следующие методы:
SoapClient->__getLastRequest,
SoapClient->__getLastRequestHeaders,
SoapClient->__getLastResponse и
SoapClient->__getLastResponseHeaders.
Опция exceptions
принимает логическое значение, определяющее,
будут ли SOAP-ошибки бросать исключения типа
SoapFault.
Опция connection_timeout
определяет тайм-аут в секундах
для соединения с SOAP-сервисом. Опция не устанавливает тайм-аут для сервисов с
медленными ответами. Для ограничения времени ожидания вызовов используется
default_socket_timeout.
Опция typemap
является массивом сопоставления типов.
Массив сопоставления типов - это массив с ключами type_name
,
type_ns
(URI пространства имён), from_xml
(функция обратного вызова принимает один строковый параметр) и
to_xml
(функция обратного вызова принимает объект в качестве параметра).
Опция cache_wsdl
принимает одно из значений:
WSDL_CACHE_NONE
,
WSDL_CACHE_DISK
,
WSDL_CACHE_MEMORY
или
WSDL_CACHE_BOTH
.
Опция user_agent
определяет строку для использования
в заголовке User-Agent
.
Опция stream_context
- это resource для
context.
Опция features
является битовой маской
SOAP_SINGLE_ELEMENT_ARRAYS
,
SOAP_USE_XSI_ARRAY_TYPE
,
SOAP_WAIT_ONE_WAY_CALLS
.
Опция keep_alive
является логическим значением, определяющим,
какой заголовок отправлять: Connection: Keep-Alive
или
Connection: close
.
Опция ssl_method
должна быть равной
SOAP_SSL_METHOD_TLS
,
SOAP_SSL_METHOD_SSLv2
,
SOAP_SSL_METHOD_SSLv3
или
SOAP_SSL_METHOD_SSLv23
.
SoapClient::SoapClient() генерирует ошибку
E_ERROR
, если опции location
и
uri
не передаются в не-WSDL режиме.
Исключение SoapFault будет выбрасываться, если
wsdl
URI не может быть загружен.
Пример #1 Пример использования SoapClient::SoapClient()
<?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")));
?>