<?php
// to see formated types
$soap = new SoapClient('http://domain.com/ws.php?WSDL');
echo '<pre>';
echo '<h2>Types:</h2>';
$types = $soap->__getTypes();
foreach ($types as $type) {
$type = preg_replace(
array('/(\w+) ([a-zA-Z0-9]+)/', '/\n /'),
array('<font color="green">${1}</font> <font color="blue">${2}</font>', "\n\t"),
$type
);
echo $type;
echo "\n\n";
}
echo '</pre>';
PHP.mk документација
SoapClient::__getTypes
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
soapclient.gettypes.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
soapclient.gettypes.php
SoapClient::__getTypes
Референца за `soapclient.gettypes.php` со подобрена типографија и навигација.
SoapClient::__getTypes
класата mysqli_driver
SoapClient::__getTypes — Враќа список на SOAP типови
= NULL
Враќа низа од типови опишани во WSDL за веб-сервисот.
Забелешка:
Оваа функција работи само во WSDL режим.
Параметри
Оваа функција нема параметри.
Вратени вредности
На array на SOAP типови, детално опишувајќи ги сите структури и типови.
Примери
Пример #1 Locale::minimizeSubtags() example
<?php
$client = new SoapClient('http://soap.amazon.com/schemas3/AmazonWebServices.wsdl');
var_dump($client->__getTypes());
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
array(88) {
[0]=>
string(30) "ProductLine ProductLineArray[]"
[1]=>
string(85) "struct ProductLine {
string Mode;
string RelevanceRank;
ProductInfo ProductInfo;
}"
[2]=>
string(105) "struct ProductInfo {
string TotalResults;
string TotalPages;
string ListName;
DetailsArray Details;
}"
...
[85]=>
string(32) "ShortSummary ShortSummaryArray[]"
[86]=>
string(121) "struct GetTransactionDetailsRequest {
string tag;
string devtag;
string key;
OrderIdArray OrderIds;
string locale;
}"
[87]=>
string(75) "struct GetTransactionDetailsResponse {
ShortSummaryArray ShortSummaries;
}"
}
Белешки од корисници 2 забелешки
felipe dot cwb at hotmail dot com ¶
пред 11 години
Serge Liatko ¶
3 години пред
Here is the fixed version of my previous code (@moderators , please delete my previous note )
Returns a more comprehensive array of SOAP Client types as an array
<?PHP
/**
* @param \SoapClient $soap
*
* @return array The WSDL types data as an array.
*/
function read_wsdl_types( SoapClient $soap ): array {
$wsdl_types = $soap->__getTypes();
$lookup = array();
$regexes = array(
'atomic' => '/^([\w_]+)\s([\w_]+)$/mi',
'list' => '/^([\w_]+)\s([\w_]+)[ {]+([\w_]+)[ }]+$/mi',
'struct' => '/([\w_]+)\s([\w_]+)[\s{]?([\w_]+)*[\s;}]?/mi',
);
foreach ( array_reverse( $wsdl_types ) as $wsdl_type ) {
$matches = array();
foreach ( $regexes as $type => $regex ) {
if ( preg_match_all( $regex, $wsdl_type, $matches ) ) {
break;
}
}
if ( !empty( $matches[1] ) && !empty( $matches[2] ) ) {
switch ( $type ) {
case 'atomic':
$name = array_shift( $matches[2] );
$data_type = array_shift( $matches[1] );
$lookup[ $name ] = array(
'name' => $name,
'type' => $type,
'data_type' => $data_type,
'items' => array(),
);
break;
case 'list':
$name = array_shift( $matches[2] );
$type = array_shift( $matches[1] );
$items = array_shift( $matches[3] );
$lookup[ $name ] = array(
'name' => $name,
'type' => $type,
'data_type' => $items,
'items' => array(
array(
'name' => '',
'data_type' => $items,
),
),
);
break;
case 'struct':
$name = array_shift( $matches[2] );
$type = array_shift( $matches[1] );
$items = array();
foreach ( $matches[2] as $key => $item_name ) {
$items[ $key ] = array(
'name' => $item_name,
'data_type' => $matches[1][ $key ],
);
}
$lookup[ $name ] = array(
'name' => $name,
'type' => $type,
'data_type' => $name,
'items' => $items,
);
break;
}
}
}
array_walk( $lookup, function ( &$type, $key, $data ) {
if ( !empty( $type['items'] ) ) {
array_walk( $type['items'], function ( &$item, $key, $data ) {
if ( !empty( $item['data_type'] ) ) {
$old_data_type = $item['data_type'];
$item['type'] = $data[ $old_data_type ]['type'] ?? 'atomic';
$item['data_type'] = $data[ $old_data_type ]['data_type'] ?? $old_data_type;
$item['from'] = $data[ $old_data_type ]['name'] ?? '';
}
}, $data );
}
}, $lookup );
return array_reverse( $lookup );
}
?>