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 function 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 со имиња на типови од WSDL како клучеви и имиња на PHP класи како вредности. Имајте предвид дека името на типот на елемент не мора да биде исто како името на елементот (таг).

Дадените имиња на класи секогаш треба да бидат целосно квалификувани со било кој namespaces, и никогаш не треба да започнуваат со водечки \. Точната форма може да се генерира со користење на ::class.

Имајте предвид дека при креирање на класа, конструкторот нема да биде повикан, но магичните __set() and __get() методи за индивидуални својства ќе бидат.

typemap array

Се користи за дефинирање на мапирања на типови користејќи кориснички дефинирани функции за повикување. Секое мапирање на типови треба да биде низа со клучеви type_name (string кој го специфицира типот на XML елемент); type_ns (string кој содржи URI на именскиот простор); from_xml (callable прифаќа еден стринг параметар и враќа објект) и to_xml (callable прифаќа еден објект параметар и враќа стринг).

exceptions bool

Дефинира дали грешките фрлаат исклучоци од типот SoapFault.

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

connection_timeout int

Дефинира тајм-аут во секунди за конекцијата со SOAP услугата. Оваа опција не дефинира тајм-аут за услуги со бавни одговори. За да се ограничи времето на чекање за завршување на повиците, опцијата default_socket_timeout конфигурациска опција е достапна.

cache_wsdl int

Ако wsdl параметарот е обезбеден, и soap.wsdl_cache_enabled конфигурациската опција е вклучена, оваа опција го одредува типот на кеширање. Еден од WSDL_CACHE_NONE, WSDL_CACHE_DISK, WSDL_CACHE_MEMORY or WSDL_CACHE_BOTH.

Достапни се два типа на кеш: кеширање во меморија, кое го кешира WSDL во меморијата на тековниот процес; и кеширање на диск, кое го кешира WSDL во датотека на дискот, споделена помеѓу сите процеси. Директориумот што ќе се користи за кешот на дискот се одредува со опцијата soap.wsdl_cache_dir конфигурациска опција. И двата кеша ја користат истата животна доба, одредена од опцијата soap.wsdl_cache_ttl конфигурациска опција. Кешот во меморија исто така има максимален број на записи одреден од опцијата soap.wsdl_cache_limit опцијата за конфигурација.

Доколку не е наведено, soap.wsdl_cache ќе се користи опцијата за конфигурација.

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.