International PHP Conference Berlin 2021

SoapClient::__construct

(PHP 5, PHP 7, PHP 8)

SoapClient::__constructКонструктор SoapClient

Описание

public SoapClient::__construct ( string|null $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")));

?>

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top