1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-23 23:28:22 +02:00
Files
Julio Napurí 0a8722b3d2 fix(translation): updated reflection, simplexml, soap references (#290)
* fix(translation): updated reflection, simplexml, soap references

* fix(translation): typo soapclient link

* Reviewed

Corrected indentation, and removed `**`

---------

Co-authored-by: Marcos Porto Mariño <php@marcospor.to>
2025-10-24 23:51:49 +02:00

785 lines
30 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f309e78f9439ae5d063a284cefb4b375233aa785 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<refentry xml:id="soapclient.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>SoapClient::__construct</refname>
<refpurpose>Constructor SoapClient</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<constructorsynopsis role="SoapClient">
<modifier>public</modifier> <methodname>SoapClient::__construct</methodname>
<methodparam><type class="union"><type>string</type><type>null</type></type><parameter>wsdl</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>options</parameter><initializer>[]</initializer></methodparam>
</constructorsynopsis>
<para>
Crea un objeto <classname>SoapClient</classname> para conectarse a un servicio SOAP.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>wsdl</parameter></term>
<listitem>
<para>
URI del archivo <acronym>WSDL</acronym> que describe el servicio, el cual se usa para
configurar automáticamente el cliente. Si no se proporciona, el cliente operará en modo
no-WSDL.
</para>
<note>
<para>
Por omisión, el archivo WSDL será almacenado en caché por razones de rendimiento. Para desactivar
o configurar este almacenamiento en caché, consulte la sección
<link linkend="soap.configuration.list">SOAP &ConfigureOptions;</link>
y la opción <link linkend="soapclient.construct.options.cache-wsdl">
<literal>cache_wsdl</literal></link>
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<para>
Un array asociativo que especifica opciones adicionales para el cliente SOAP.
Si el parámetro <parameter>wsdl</parameter> se proporciona, esto es opcional; de lo contrario,
al menos los parámetros <literal>location</literal> y <literal>url</literal> deben ser
proporcionados.
<variablelist>
<varlistentry xml:id="soapclient.construct.options.location">
<term>
<parameter>location</parameter>
<type>string</type>
</term>
<listitem>
<para>
La URL del servidor SOAP al que enviar la petición.
</para>
<para>
Requerido si el parámetro <parameter>wsdl</parameter> no se proporciona.
Si tanto un parámetro <parameter>wsdl</parameter> como
la opción <literal>location</literal> se proporcionan, la opción
<literal>location</literal> reemplazará cualquier ubicación especificada en el archivo WSDL.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.uri">
<term>
<parameter>uri</parameter>
<type>string</type>
</term>
<listitem>
<para>
El espacio de nombres objetivo del servicio SOAP.
</para>
<para>
Requerido si el parámetro <parameter>wsdl</parameter> no se proporciona;
de lo contrario, se ignora.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.style">
<term>
<parameter>style</parameter>
<type>int</type>
</term>
<listitem>
<para>
Especifica el estilo de enlace a utilizar para este cliente, utilizando las constantes
<constant>SOAP_RPC</constant> y <constant>SOAP_DOCUMENT</constant>.
<constant>SOAP_RPC</constant> indica un enlace de estilo RPC, donde el
cuerpo de la petición SOAP contiene un codificado estándar de una llamada de función.
<constant>SOAP_DOCUMENT</constant> indica un enlace de estilo documento,
donde el cuerpo de la petición SOAP contiene un documento XML con
un significado definido por el servicio.
</para>
<para>
Si el parámetro <parameter>wsdl</parameter> se proporciona, esta
opción se ignora y el estilo se lee desde el archivo WSDL.
</para>
<para>
Si ni esta opción ni el parámetro <parameter>wsdl</parameter>
se proporcionan, se utiliza el estilo RPC.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.use">
<term>
<parameter>use</parameter>
<type>int</type>
</term>
<listitem>
<para>
Especifica el estilo de codificación a utilizar para este cliente, utilizando las
constantes <constant>SOAP_ENCODED</constant> o <constant>SOAP_LITERAL</constant>.
<constant>SOAP_ENCODED</constant> indica una codificación utilizando los tipos
definidos en la especificación SOAP.
<constant>SOAP_LITERAL</constant> indica una codificación utilizando un esquema
definido.
</para>
<para>
Si el parámetro <parameter>wsdl</parameter> se proporciona, esta
opción se ignora y la codificación se lee desde el archivo WSDL.
</para>
<para>
Si esta opción y el parámetro <parameter>wsdl</parameter> no se proporcionan,
se utiliza el estilo "encoded".
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.soap-version">
<term>
<parameter>soap_version</parameter>
<type>int</type>
</term>
<listitem>
<para>
Especifica la versión del protocolo SOAP a utilizar:
<constant>SOAP_1_1</constant> para SOAP 1.1,
o <constant>SOAP_1_2</constant> para SOAP 1.2.
</para>
<para>
Si se omite, se utiliza SOAP 1.1.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.authentication">
<term>
<parameter>authentication</parameter>
<type>int</type>
</term>
<listitem>
<para>
Especifica el método de autenticación al utilizar la autenticación
HTTP en las peticiones. El valor puede ser
<constant>SOAP_AUTHENTICATION_BASIC</constant>
o <constant>SOAP_AUTHENTICATION_DIGEST</constant>.
</para>
<para>
Si se omite y la opción <literal>login</literal> se proporciona,
se utiliza la autenticación HTTP Basic.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.login">
<term>
<parameter>login</parameter>
<type>string</type>
</term>
<listitem>
<para>
Nombre de usuario a utilizar con la autenticación HTTP Basic o HTTP Digest.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.password">
<term>
<parameter>password</parameter>
<type>string</type>
</term>
<listitem>
<para>
Contraseña a utilizar con la autenticación HTTP Basic o HTTP Digest.
</para>
<para>
No confundir con <literal>passphrase</literal>,
que se utiliza con la autenticación por certificado cliente HTTPS.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.local-cert">
<term>
<parameter>local_cert</parameter>
<type>string</type>
</term>
<listitem>
<para>
Ruta hacia un certificado cliente a utilizar con la autenticación HTTPS.
Debe ser un archivo codificado en <acronym>PEM</acronym> que contenga el certificado
y su clave privada.
</para>
<para>
El archivo también puede incluir una cadena de emisores, que debe venir
después del certificado cliente.
</para>
<para>
También puede ser definido a través de
<link linkend="soapclient.construct.options.stream-context">
<parameter>stream_context</parameter></link>,
que también permite especificar un archivo de clave privada distinto.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.passphrase">
<term>
<parameter>passphrase</parameter>
<type>string</type>
</term>
<listitem>
<para>
Passphrase para el certificado cliente especificado en la opción
<literal>local_cert</literal>.
</para>
<para>
No confundir con <literal>password</literal>,
que se utiliza con la autenticación HTTP Basic o HTTP Digest.
</para>
<para>
También puede ser definido a través de
<link linkend="soapclient.construct.options.stream-context">
<parameter>stream_context</parameter></link>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.proxy-host">
<term>
<parameter>proxy_host</parameter>
<type>string</type>
</term>
<listitem>
<para>
Nombre de host a utilizar como servidor proxy para las peticiones HTTP.
</para>
<para>
La opción <literal>proxy_port</literal> también debe ser especificada.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.proxy-port">
<term>
<parameter>proxy_port</parameter>
<type>int</type>
</term>
<listitem>
<para>
Puerto TCP a utilizar al conectarse al servidor proxy
especificado en <literal>proxy_host</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.proxy-login">
<term>
<parameter>proxy_login</parameter>
<type>string</type>
</term>
<listitem>
<para>
Nombre de usuario opcional para autenticarse con el servidor proxy
especificado en <literal>proxy_host</literal>, utilizando la autenticación
HTTP Basic.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.proxy-password">
<term>
<parameter>proxy_password</parameter>
<type>string</type>
</term>
<listitem>
<para>
Contraseña opcional para autenticarse con el servidor proxy
especificado en <literal>proxy_host</literal>, utilizando la autenticación
HTTP Basic.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.compression">
<term>
<parameter>compression</parameter>
<type>int</type>
</term>
<listitem>
<para>
Activa la compresión de las peticiones y respuestas SOAP HTTP.
</para>
<para>
El valor debe ser el resultado de la operación OR a nivel de bits de tres partes:
un <constant>SOAP_COMPRESSION_ACCEPT</constant> opcional,
para enviar el encabezado "Accept-Encoding"; ya sea
<constant>SOAP_COMPRESSION_GZIP</constant>
o <constant>SOAP_COMPRESSION_DEFLATE</constant> para indicar
el algoritmo de compresión a utilizar; y un número entre 1 y 9
para indicar el nivel de compresión a utilizar en la petición.
Por ejemplo, para activar la compresión gzip bidireccional con el nivel
de compresión máximo, utilice
<literal>SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 9</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.encoding">
<term>
<parameter>encoding</parameter>
<type>string</type>
</term>
<listitem>
<para>
Define el codificado de caracteres interno. Las peticiones siempre se envían
en UTF-8 y se convierten desde y hacia este codificado.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.trace">
<term>
<parameter>trace</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Captura la información de petición y respuesta, que luego puede ser
consultada utilizando los métodos
<methodname>SoapClient::__getLastRequest</methodname>,
<methodname>SoapClient::__getLastRequestHeaders</methodname>,
<methodname>SoapClient::__getLastResponse</methodname>,
y <methodname>SoapClient::__getLastResponseHeaders</methodname>.
</para>
<para>
Si se omite, el valor por omisión es &false;
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.classmap">
<term>
<parameter>classmap</parameter>
<type>array</type>
</term>
<listitem>
<para>
Utilizado para asociar los tipos definidos en el WSDL con las clases PHP.
Debe ser especificado en forma de un <type>array</type> asociativo con
los nombres de tipos del WSDL como claves y los nombres de clases PHP como valores.
Tenga en cuenta que el nombre de tipo de un elemento no necesariamente corresponden al nombre
del elemento (etiqueta).
</para>
<para>
Los nombres de clase proporcionados siempre deben estar completamente calificados con
todos los <link linkend="language.namespaces">espacios de nombres</link>, y nunca
comenzar con un <literal>\</literal>. La forma correcta puede ser
generada utilizando
<link linkend="language.oop5.basic.class.class">::class</link>.
</para>
<para>
Tenga en cuenta que al crear una clase, el constructor no será llamado,
pero los métodos mágicos <link linkend="object.set">__set()</link> y
<link linkend="object.get">__get()</link> para las propiedades individuales sí lo serán.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.typemap">
<term>
<parameter>typemap</parameter>
<type>array</type>
</term>
<listitem>
<para>
Utilizado para definir correspondencias de tipos utilizando funciones de devolución de llamada
definidas por el usuario.
Cada correspondencia de tipo debe ser un array con las claves
<literal>type_name</literal> (un <type>string</type> que especifica el
tipo de elemento XML),
<literal>type_ns</literal> (un <type>string</type> que contiene
la URI del espacio de nombres),
<literal>from_xml</literal> (un <type>callable</type> que acepta un parámetro
de tipo string y devuelve un objeto) y
<literal>to_xml</literal> (un <type>callable</type> que acepta un parámetro
de tipo objeto y devuelve un string).
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.exceptions">
<term>
<parameter>exceptions</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Define si los errores generan excepciones de tipo
<classname>SoapFault</classname>.
</para>
<para>
Por omisión, es &true;
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.connection-timeout">
<term>
<parameter>connection_timeout</parameter>
<type>int</type>
</term>
<listitem>
<para>
Define un tiempo límite en segundos para la conexión al servicio SOAP.
Esta opción no define un tiempo límite para los servicios con respuesta lenta.
Para limitar el tiempo de espera de las llamadas, la opción de configuración
<link linkend="ini.default-socket-timeout">default_socket_timeout</link>
está disponible.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.cache-wsdl">
<term>
<parameter>cache_wsdl</parameter>
<type>int</type>
</term>
<listitem>
<para>
Si el parámetro <parameter>wsdl</parameter> se especifica y la opción de
configuración
<link linkend="ini.soap.wsdl-cache-enabled">soap.wsdl_cache_enabled</link>
está activada, esta opción determina el tipo de almacenamiento en caché.
Una de las constantes <constant>WSDL_CACHE_NONE</constant>,
<constant>WSDL_CACHE_DISK</constant>,
<constant>WSDL_CACHE_MEMORY</constant> o
<constant>WSDL_CACHE_BOTH</constant>.
</para>
<para>
Dos tipos de caché están disponibles: la caché en memoria, que almacena en caché el WSDL
en la memoria del proceso actual, y la caché en disco, que almacena en caché el WSDL
en un archivo en el disco compartido entre todos los procesos.
El directorio a utilizar para la caché en disco es determinado por la opción de configuración
<link linkend="ini.soap.wsdl-cache-dir">soap.wsdl_cache_dir</link>.
Las dos cachés tienen la misma vida útil, determinada por la opción de configuración
<link linkend="ini.soap.wsdl-cache-ttl">soap.wsdl_cache_ttl</link>.
La caché en memoria también tiene un número máximo de entradas determinado por la opción de configuración
<link linkend="ini.soap.wsdl-cache-limit">soap.wsdl_cache_limit</link>.
</para>
<para>
Si no se especifica, la opción de configuración <link linkend="ini.soap.wsdl-cache">
soap.wsdl_cache</link> será utilizada.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.user-agent">
<term>
<parameter>user_agent</parameter>
<type>string</type>
</term>
<listitem>
<para>
El valor a utilizar en el encabezado HTTP <literal>User-Agent</literal>
durante las peticiones.
</para>
<para>
También puede ser definido a través de <link linkend="soapclient.construct.options.stream-context">
<parameter>stream_context</parameter></link>.
</para>
<para>
Si no se especifica, el agente de usuario será <literal>"PHP-SOAP/"</literal>
seguido del valor de <constant>PHP_VERSION</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.stream-context">
<term>
<parameter>stream_context</parameter>
<type>resource</type>
</term>
<listitem>
<para>
Un <link linkend="context">contexto de flujo</link> creado por
<function>stream_context_create</function>, que permite definir opciones adicionales.
</para>
<para>
El contexto puede incluir opciones de contexto <link linkend="context.socket">socket</link>,
opciones de contexto <link linkend="context.ssl">SSL</link>,
así como algunas opciones de contexto <link linkend="context.http">HTTP</link> seleccionadas:
<literal>content_type</literal>, <literal>header</literal>,
<literal>max_redirects</literal>, <literal>protocol_version</literal>,
y <literal>user_agent</literal>.
</para>
<para>
Tenga en cuenta que los siguientes encabezados HTTP son generados automáticamente o a partir de otras
opciones, y serán ignorados si se especifican en la opción de contexto <literal>'header'</literal>:
<literal>host</literal>, <literal>connection</literal>,
<literal>user-agent</literal>, <literal>content-length</literal>,
<literal>content-type</literal>, <literal>cookie</literal>,
<literal>authorization</literal> y <literal>proxy-authorization</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.features">
<term>
<parameter>features</parameter>
<type>int</type>
</term>
<listitem>
<para>
Una máscara de bits para activar una o más de las siguientes funcionalidades:
<variablelist>
<varlistentry>
<term>
<constant>SOAP_SINGLE_ELEMENT_ARRAYS</constant>
</term>
<listitem>
<para>
Al decodificar una respuesta en array, el comportamiento por omisión consiste en detectar si
un nombre de elemento aparece una sola vez o múltiples veces en un elemento padre particular.
Para los elementos que aparecen una sola vez, una propiedad de objeto permite un acceso directo al
contenido; para los elementos que aparecen más de una vez, la propiedad contiene un
array con el contenido de cada elemento correspondiente.
</para>
<para>
Si la funcionalidad <constant>SOAP_SINGLE_ELEMENT_ARRAYS</constant> está activada,
los elementos que aparecen una sola vez se colocan en un array de un solo elemento, de modo que
el acceso sea coherente para todos los elementos. Esto solo tiene efecto al utilizar un WSDL
que contenga un esquema para la respuesta. Consulte la sección de ejemplos para una ilustración.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>SOAP_USE_XSI_ARRAY_TYPE</constant>
</term>
<listitem>
<para>
Cuando la opción <link linkend="soapclient.construct.options.use"><literal>use</literal>
opción</link> o la propiedad WSDL está definida en <literal>encoded</literal>,
fuerza a los arrays a utilizar un tipo <literal>SOAP-ENC:Array</literal>, en lugar de un
tipo específico del esquema.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<constant>SOAP_WAIT_ONE_WAY_CALLS</constant>
</term>
<listitem>
<para>
Esperar una respuesta incluso si el WSDL indica una petición de un solo sentido.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.keep-alive">
<term>
<parameter>keep_alive</parameter>
<type>bool</type>
</term>
<listitem>
<para>
un valor booleano que define si
enviar el encabezado <literal>Connection: Keep-Alive</literal> o
<literal>Connection: close</literal>.
</para>
<para>
Por omisión, es &true;
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="soapclient.construct.options.ssl-method">
<term>
<parameter>ssl_method</parameter>
<type>string</type>
</term>
<listitem>
<para>
Especifica la versión del protocolo SSL o TLS a utilizar con las conexiones HTTP seguras, en lugar de la negociación por omisión.
Especificar <constant>SOAP_SSL_METHOD_SSLv2</constant> o <constant>SOAP_SSL_METHOD_SSLv3</constant> forzará el uso de SSL 2 o SSL 3, respectivamente.
Especificar <constant>SOAP_SSL_METHOD_SSLv23</constant> no tiene ningún efecto;
esta constante solo existe por razones de compatibilidad ascendente.
A partir de PHP 7.2.0, especificar <constant>SOAP_SSL_METHOD_TLS</constant>
tampoco tiene ningún efecto; en versiones anteriores, esto forzaba el uso de TLS 1.0.
</para>
<para>
Es de notar que las versiones SSL 2 y 3 se consideran no seguras y pueden no ser soportadas por la biblioteca OpenSSL instalada.
</para>
<para>
Esta opción es <emphasis role="strong">obsoleta</emphasis> a partir de PHP 8.1.0.
Una alternativa más flexible, que permite especificar versiones individuales de TLS, consiste en utilizar la opción <link linkend="soapclient.construct.options.stream-context"><parameter>contexto_de_flux</parameter></link> con el parámetro de contexto 'crypto_method'.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
// Especificar el uso de TLS 1.3 solamente
$context = stream_context_create([
'ssl' => [
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT
]
]);
$client = new SoapClient("some.wsdl", ['context' => $context]);
]]>
</programlisting>
</informalexample>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
<methodname>SoapClient::__construct</methodname> generará un error de tipo
<constant>E_ERROR</constant> si las opciones <literal>location</literal> y
<literal>uri</literal> no se proporcionan en modo non-WSDL.
</para>
<para>
Una excepción de tipo <classname>SoapFault</classname> será lanzada si el URI
<parameter>wsdl</parameter> no puede ser cargado.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>
Ejemplo <methodname>SoapClient::__construct</methodname>
</title>
<programlisting role="php">
<![CDATA[
<?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));
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Utilizando la funcionalidad <constant>SOAP_SINGLE_ELEMENT_ARRAYS</constant></title>
<programlisting role="php">
<![CDATA[
<?php
/* Suponiendo una respuesta como esta, y un WSDL apropiado:
<?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 );
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
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"
}
]]>
</screen>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->