PHP.mk документација

SoapClient::__construct

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

soapclient.construct.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека soapclient.construct.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SoapClient::__construct

Референца за `soapclient.construct.php` со подобрена типографија и навигација.

soapclient.construct.php

SoapClient::__construct

класата mysqli_driver

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

= NULL

public SoapClient::__construct(?string $wsdl, array $options = [])

Креира SoapClient објект за поврзување со SOAP услуга.

Параметри

wsdl

URI на WSDL датотека што ја опишува услугата, која се користи за автоматско конфигурирање на клиентот. Ако не е обезбедена, клиентот ќе работи во режим без WSDL.

Забелешка:

Стандардно, WSDL-датотеката ќе биде кеширана за подобри перформанси. За да го оневозможите или конфигурирате ова кеширање, видете SOAP Опции за конфигурирање Пример #4 Споредување на вратената вредност на include cache_wsdl option.

options

Асоцијативен низ што специфицира дополнителни опции за SOAP клиентот. Ако wsdl е обезбедено, ова е опционално; инаку, барем location and url е шифриран (како што треба да биде),

location string

URL-то на SOAP серверот на кој ќе се испрати барањето.

Задолжително ако wsdl параметарот не е обезбеден. Ако и wsdl параметарот и location опцијата се обезбедени, location опцијата ќе ги надвладее сите локации специфицирани во WSDL-датотеката.

uri string

Целниот простор на имиња на SOAP услугата.

Задолжително ако wsdl параметарот не е обезбеден; инаку се игнорира.

style int

Специфицира стил на поврзување што ќе се користи за овој клиент, користејќи ги константите SOAP_RPC and SOAP_DOCUMENT. SOAP_RPC означува RPC-стил на поврзување, каде што телото на SOAP барањето содржи стандардно кодирање на повик на функција. SOAP_DOCUMENT означува документ-стил на поврзување, каде што телото на SOAP барањето содржи XML документ со значење дефинирано од услугата.

Ако wsdl ако се обезбеди параметарот, оваа опција се игнорира и стилот се чита од WSDL-датотеката.

Ако ниту оваа опција ниту wsdl параметарот е обезбеден, се користи RPC-стил.

use int

Го специфицира стилот на кодирање што треба да се користи за овој клиент, користејќи ги константите SOAP_ENCODED or SOAP_LITERAL. SOAP_ENCODED го означува кодирањето користејќи ги типовите дефинирани во спецификацијата на SOAP. SOAP_LITERAL го означува кодирањето користејќи шема дефинирана од услугата.

Ако wsdl ако се обезбеди параметарот, оваа опција се игнорира и кодирањето се чита од WSDL-датотеката.

Ако ниту оваа опција ниту wsdl ако се обезбеди параметарот, се користи „encoded“ стилот.

soap_version int

Го специфицира верзијата на SOAP протоколот што треба да се користи: SOAP_1_1 за SOAP 1.1, или SOAP_1_2 за SOAP 1.2.

Ако е изоставено, се користи SOAP 1.1.

authentication int

Го специфицира методот за автентикација при користење на HTTP автентикација во барањата. Вредноста може да биде или SOAP_AUTHENTICATION_BASIC or SOAP_AUTHENTICATION_DIGEST.

Ако е изоставено, и login параметарот е обезбеден, се користи Basic Authentication.

login string

Корисничко име што треба да се користи со HTTP Basic или Digest Authentication.

password string

Лозинка што треба да се користи со HTTP Basic или Digest Authentication.

Не треба да се меша со passphrase, што се користи со автентикација на клиентски сертификат за HTTPS.

local_cert string

Патека до клиентски сертификат за употреба со автентикација на HTTPS. Мора да биде PEM enkodirana datoteka што ги содржи сертификатот и приватниот клуч.

Датотеката може да вклучува и синџир на издавачи, кои мора да доаѓаат по клиентскиот сертификат.

Може да се постави и преку stream_context, што исто така поддржува специфицирање на посебна датотека со приватен клуч.

passphrase string

Лозинка за клиентскиот сертификат наведен во local_cert option.

Не треба да се меша со password, што се користи за Basic или Digest автентикација.

Може да се постави и преку stream_context.

proxy_host string

Име на домаќин што ќе се користи како прокси сервер за HTTP барања.

На proxy_port опцијата мора исто така да биде специфицирана.

proxy_port int

TCP порта што ќе се користи при поврзување со прокси серверот наведен во proxy_host.

proxy_login string

Изборно корисничко име за автентикација со прокси серверот наведен во proxy_host, користејќи HTTP Basic автентикација.

proxy_password string

Изборна лозинка за автентикација со прокси серверот наведен во proxy_host, користејќи HTTP Basic автентикација.

compression int

Овозможува компресија на HTTP SOAP барања и одговори.

Вредноста треба да биде бинарно ИЛИ од три дела: опционално SOAP_COMPRESSION_ACCEPT, за испраќање на "Accept-Encoding" заглавие; или SOAP_COMPRESSION_GZIP or SOAP_COMPRESSION_DEFLATE за да го означи алгоритмот за компресија што ќе се користи; и број помеѓу 1 и 9 за да го означи нивото на компресија што ќе се користи во барањето. На пример, за да овозможите двонасочна gzip компресија со максимално ниво на компресија, користете SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 9.

encoding string

Ги дефинира внатрешните кодови на знаците. Барањата секогаш се испраќаат во UTF-8, и се претвораат до и од овој код.

trace bool

Ги снима информациите за барањето и одговорот, до кои потоа може да се пристапи со методите Враќа го XML-от примен во последниот SOAP одговор., SoapClient::__getLastRequest(), SoapClient::__getLastResponse()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во Враќа го XML-от примен во последниот SOAP одговор..

Ако е изоставено, стандардно е false

classmap array

Се користи за мапирање на типови дефинирани во WSDL кон PHP класи. Треба да биде специфицирано како асоцијативно array with type names from the WSDL as keys and names of PHP classes as values. Note that the type name of an element is not necessarily the same as the element (tag) name.

The provided class names should always be fully qualified with any namespaces, and never start with a leading \. The correct form can be generated by using ::class.

Note that when creating a class, the constructor will not be called, but magic __set() and __get() methods for individual properties will be.

typemap array

Used to define type mappings using user-defined callback functions. Each type mapping should be an array with keys type_name (string specifying the XML element type); type_ns (string containing namespace URI); from_xml (callable accepting one string parameter and returning an object) and to_xml (callable accepting one object parameter and returning a string).

exceptions bool

Defines whether errors throw exceptions of type SoapFault.

Стандардно е true

connection_timeout int

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 configuration option is available.

cache_wsdl int

Ако wsdl parameter is provided, and the soap.wsdl_cache_enabled configuration option is on, this option determines the type of caching. One of WSDL_CACHE_NONE, WSDL_CACHE_DISK, WSDL_CACHE_MEMORY or WSDL_CACHE_BOTH.

Two types of cache are available: in-memory caching, which caches the WSDL in the memory of the current process; and disk caching, which caches the WSDL in a file on disk, shared between all processes. The directory to use for the disk cache is determined by the soap.wsdl_cache_dir configuration option. Both caches use the same lifetime, determined by the soap.wsdl_cache_ttl configuration option. The in-memory cache also has a maximum number of entries determined by the soap.wsdl_cache_limit опцијата за конфигурација.

If not specified, the soap.wsdl_cache configuration option will be used.

user_agent string

ќе се користи опцијата за конфигурација. User-Agent Вредноста што ќе се користи во

Може да се постави и преку stream_context.

HTTP заглавје при правење барања. "PHP-SOAP/" Ако не е наведено, корисничкиот агент ќе биде PHP_VERSION.

stream_context resource

А следен од вредноста на креирано од stream_context_create()контекст на стрим

, што овозможува поставување дополнителни опции. Контекстот може да вклучува, SSL опции за контекстопции за контекст на сокет Опции на HTTP контекстот: content_type, header, max_redirects, protocol_versionПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во user_agent.

, плус избрани 'header' Имајте предвид дека следните HTTP заглавја се генерираат автоматски или од други опции и ќе бидат игнорирани ако се специфицирани во host, connection, user-agent, content-length, content-type, cookie, authorizationПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во proxy-authorization

features int

опцијата за контекст:

SOAP_SINGLE_ELEMENT_ARRAYS

Маска за битови за овозможување на една или повеќе од следниве карактеристики:

Ако SOAP_SINGLE_ELEMENT_ARRAYS При декодирање на одговор во низа, стандардното однесување е да се открие дали името на елементот се појавува еднаш или повеќепати во одреден родителски елемент. За елементи што се појавуваат само еднаш, својство на објект овозможува директен пристап до содржината; за елементи што се појавуваат повеќепати, својството содржи низа со содржината на секој соодветен елемент.

SOAP_USE_XSI_ARRAY_TYPE

Кога use option карактеристиката е овозможена, елементите што се појавуваат само еднаш се ставаат во низа со еден елемент, така што пристапот е конзистентен за сите елементи. Ова има ефект само кога се користи WSDL што содржи шема за одговорот. Погледнете го делот Примери за илустрација. encodedили својството WSDL е поставено на SOAP-ENC:Array, форсирај ги низите да користат тип на

SOAP_WAIT_ONE_WAY_CALLS

, наместо тип специфичен за шемата.

keep_alive bool

Чекај одговор дури и ако WSDL укажува на еднонасочно барање. Connection: Keep-Alive заглавие или Connection: close.

Стандардно е true

ssl_method string

Ги специфицира верзијата на протоколот SSL или TLS што треба да се користи со безбедни HTTP конекции, наместо стандардното преговарање. Специфицирањето SOAP_SSL_METHOD_SSLv2 or SOAP_SSL_METHOD_SSLv3 ќе форсира употреба на SSL 2 или SSL 3, соодветно. Специфицирањето SOAP_SSL_METHOD_SSLv23 нема ефект; константата постои само за компатибилност со претходните верзии. Од PHP 7.2.0, специфицирањето SOAP_SSL_METHOD_TLS исто така нема ефект; во претходните верзии, форсираше употреба на TLS 1.0.

Имајте предвид дека SSL верзиите 2 и 3 се сметаат за несигурни и можеби нема да бидат поддржани од инсталираната OpenSSL библиотека.

Оваа опција е deprecated од PHP 8.1.0. Пофлексибилна алтернатива, која дозволува специфицирање на индивидуални верзии на TLS, е да се користи stream_context опцијата со контекст параметарот 'crypto_method'.

<?php
// Specifying use of TLS 1.3 only
$context = stream_context_create([
'ssl' => [
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT
]
]);
$client = new SoapClient("some.wsdl", ['context' => $context]);

Errors/Exceptions

SoapClient::__setLocation() ќе генерира E_ERROR грешка ако location and uri опциите не се обезбедени во режим што не е WSDL.

А SoapFault ќе биде фрлен исклучок ако wsdl URI не може да се вчита.

Примери

Пример #1 SoapClient::__setLocation() 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 | 9));

$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")));

$typemap = array(
array(
"type_ns" => "http://schemas.example.com",
"type_name" => "book",
"from_xml" => "unserialize_book",
"to_xml" => "serialize_book")
);
$client = new SoapClient("books.wsdl", array('typemap' => $typemap));

?>

Пример #2 Користејќи го SOAP_SINGLE_ELEMENT_ARRAYS feature

<?php
/* Assuming a response like this, and an appropriate WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:example">
<SOAP-ENV:Body>
<response>
<collection>
<item>Single</item>
</collection>
<collection>
<item>First</item>
<item>Second</item>
</collection>
</response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
*/

echo "Default:\n";

$client = new TestSoapClient(__DIR__ . '/temp.wsdl');
$response = $client->exampleRequest();
var_dump( $response->collection[0]->item );
var_dump( $response->collection[1]->item );

echo
"\nWith SOAP_SINGLE_ELEMENT_ARRAYS:\n";

$client = new TestSoapClient(__DIR__ . '/temp.wsdl', ['features' => SOAP_SINGLE_ELEMENT_ARRAYS]);
$response = $client->exampleRequest();
var_dump( $response->collection[0]->item );
var_dump( $response->collection[1]->item );

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Default:
string(6) "Single"
array(2) {
  [0] =>
  string(5) "First"
  [1] =>
  string(6) "Second"
}

With SOAP_SINGLE_ELEMENT_ARRAYS:
array(1) {
  [0] =>
  string(6) "Single"
}
array(2) {
  [0] =>
  string(5) "First"
  [1] =>
  string(6) "Second"
}

Белешки од корисници 1 белешка

turabgarip на gmail точка com
пред 1 година
Two notes about the steam_context option:

1- In the example of the documentation, it says:

<?php
$client = new SoapClient("some.wsdl", ['context' => $context]);
?>

This is wrong. As it is stated in the parameters list, it must be "stream_context" and NOT "context".

2- The HTTP Context manual here: https://www.php.net/manual/en/context.http.php

It says header can either be of type array or string. This is also wrong. It may not necessarily be optional because it might depend on your PHP compile time configuration.

If your instance is compiled --with-curlwrappers option, you should use array type for header in the HTTP context and if not; you should use a string separated by new line (\n) for the header. I am not sure if SoapClient respects curl_wrappers option because although it is enabled in my instance and although I am using arrays for the headers to create HTTP context for non-Soap operations; SoapClient required me to use a string. It otherwise just dropped the stream_context altogether.

So with SoapClient, you better use a string for the HTTP header like:

<?php

$context = stream_context_create(array(
    'http' => array(
        'user_agent' => 'My App',
        'header' =>
            "Custom-Header: Value\n" .
            "Another Header: Surprise"
    )
));

$client = new SoapClient('some.wsdl', ['stream_context' => $context]);
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.