1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-23 07:08:17 +02:00
Files
archived-doc-es/reference/soap/soapserver/setpersistence.xml
T
Pedro Antonio Gil Rodríguez b15a7aff5b Actualización a la últma versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@331208 c90b9560-bf6c-de11-be94-00142212c4b1
2013-08-26 14:21:14 +00:00

149 lines
4.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 555841922ae2f9298d1affdbe0700cbf0a91d404 Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="soapserver.setpersistence" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>SoapServer::setPersistence</refname>
<refpurpose>Establece el modo de persistencia de SoapServer</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>SoapServer::setPersistence</methodname>
<methodparam><type>int</type><parameter>mode</parameter></methodparam>
</methodsynopsis>
<para>
Esta función permite cambiar el estado de persistencia de un objeto SoapServer entre
peticiones. Esta función permite guardar datos entre peticiones usando sesiones de PHP. Este método
solamente tiene efecto en un SoapServer después de exportar funciones utilizando <methodname>SoapServer::setClass</methodname>.
</para>
<note>
<para>
La persistencia de <constant>SOAP_PERSISTENCE_SESSION</constant> solamente hace
persistentes a los objetos de la clase dad, no los datos estáticos de la clase. En este
caso, use <varname>$this->bar</varname> en lugar de self::$bar.
</para>
</note>
<note>
<para>
<constant>SOAP_PERSISTENCE_SESSION</constant> serializa datos en el objeto de clase entre peticiones. Para poder adecuadamente utilizar recursos (p.ej. <classname>PDO</classname>), deberían usarse los métodos mágicos <link linkend="object.wakeup">__wakeup()</link> y <link linkend="object.sleep">__sleep()</link>.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Una de las constantes <literal>SOAP_PERSISTENCE_XXX</literal>.
</para>
<para>
<constant>SOAP_PERSISTENCE_REQUEST</constant> - Los datos de SoapServer no persisten entre
peticiones. Este es el comportamiento <emphasis role="bold">predeterminado</emphasis> de cualquier objeto
SoapServer después de llamar a setClass.
</para>
<para>
<constant>SOAP_PERSISTENCE_SESSION</constant> - Los datos de SoapServer persisten entre peticiones.
Esto se lleva a cabo serializando los datos de la clase SoapServer en
<varname>$_SESSION['_nombre_sesión_falso']</varname>, ya que
<function>session_start</function> debe invocarse antes de establecer este modo de persistencia.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>SoapServer::setPersistence</function></title>
<programlisting role="php">
<![CDATA[
<?php
class MyFirstPersistentSoapServer {
private $resource; // (Tal como PDO, mysqli, etc..)
public $mivar1;
public $mivar2;
public function __construct() {
$this->__wakeup(); // Estamos llamando nuestro wakeup para manejar nuestro recurso
}
public function __wakeup() {
$this->resource = CodeToStartOurResourceUp();
}
public function __sleep() {
// Nos aseguramos de omitir $resource aquí, por lo que nuestro datos de sesión persisten
// Un fallo resultará en el fallo durante la deserialilzación de datos
// en la próxima petición; por lo tanto, nuestro SoapObject no sería persistente entre peticiones.
return array('mivar1','mivar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence DEBE invocarse después de setClass, debido a que el comportamiento
// de setClass establece SESSION_PERSISTENCE_REQUEST tras promulgar el método.
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP ERROR: ". $e->getMessage());
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>SoapServer::setClass</methodname></member>
</simplelist>
</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
-->