<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.soapserver.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'soapserver.setpersistence.php',
    1 => 'SoapServer::setPersistence',
    2 => 'Activa el modo persistente de SoapServer',
  ),
  'up' => 
  array (
    0 => 'class.soapserver.php',
    1 => 'SoapServer',
  ),
  'prev' => 
  array (
    0 => 'soapserver.setobject.php',
    1 => 'SoapServer::setObject',
  ),
  'next' => 
  array (
    0 => 'class.soapfault.php',
    1 => 'SoapFault',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/soap/soapserver/setpersistence.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="soapserver.setpersistence" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">SoapServer::setPersistence</h1>
  <p class="verinfo">(PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">SoapServer::setPersistence</span> &mdash; <span class="dc-title">Activa el modo persistente de SoapServer</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-soapserver.setpersistence-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>SoapServer::setPersistence</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$mode</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

  <p class="para rdfs-comment">
   Esta función permite cambiar la persistencia de un objeto SoapServer entre las
   peticiones. Permite guardar los datos entre las peticiones, mediante las
   sesiones PHP. Esta función solo tiene efecto después de haber exportado la lista de funciones
   mediante <span class="methodname"><a href="soapserver.setclass.php" class="methodname">SoapServer::setClass()</a></span>.
  </p>
   <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <p class="para">
     La constante de persistencia <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong>
     hace persistentes únicamente los objetos de la clase dada, pero no
     los datos estáticos. En este caso, <var class="varname">$this->bar</var>
     en lugar de self::$bar.
    </p>
   </p></blockquote>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
    <p class="para">
     <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> serializa los datos del objeto entre
     las peticiones. En el caso de los recursos (por ejemplo <span class="classname"><a href="class.pdo.php" class="classname">PDO</a></span>),
     <a href="language.oop5.magic.php#object.wakeup" class="link">__wakeup()</a> y <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a> deben ser
     utilizadas.
    </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-soapserver.setpersistence-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">mode</code></dt>
     <dd>
      <p class="para">
       Una de las constantes <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_<span class="replaceable">*</span></a></code></strong>.
      </p>
      <p class="para">
       <strong><code><a href="soap.constants.php#constant.soap-persistence-request">SOAP_PERSISTENCE_REQUEST</a></code></strong> - Los datos de SoapServer
       no son persistentes entre las peticiones. Este es el comportamiento por
       <strong>omisión</strong> de todo objeto SoapServer después
       de llamar a setClass().
      </p>
      <p class="para">
       <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> - Los datos de SoapServer
       persisten entre las peticiones. Esto se realiza serializando los datos de
       la clase SoapServer en <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION['_bogus_session_name']</a></var>,
       por lo que <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> debe ser llamada antes de pasar
       a este modo de persistencia.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-soapserver.setpersistence-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   No se retorna ningún valor.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-soapserver.setpersistence-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo <span class="function"><strong>SoapServer::setPersistence()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /> </span><span style="color: #007700">class </span><span style="color: #0000BB">MyFirstPersistentSoapServer </span><span style="color: #007700">{<br />     private </span><span style="color: #0000BB">$resource</span><span style="color: #007700">; </span><span style="color: #FF8000">// (Por ejemplo PDO, mysqli, etc..)<br />     </span><span style="color: #007700">public </span><span style="color: #0000BB">$myvar1</span><span style="color: #007700">;<br />     public </span><span style="color: #0000BB">$myvar2</span><span style="color: #007700">;<br /><br />     public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">() {<br />         </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">__wakeup</span><span style="color: #007700">(); </span><span style="color: #FF8000">// Se llama a nuestro wakeup para reiniciar nuestro recurso<br />     </span><span style="color: #007700">}<br /><br />     public function </span><span style="color: #0000BB">__wakeup</span><span style="color: #007700">() {<br />         </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">resource </span><span style="color: #007700">= </span><span style="color: #0000BB">CodeToStartOurResourceUp</span><span style="color: #007700">();<br />     }<br /><br />     public function </span><span style="color: #0000BB">__sleep</span><span style="color: #007700">() {<br />         </span><span style="color: #FF8000">// Se asegura de eliminar $resource aquí, así nuestros datos pueden persistir en sesión<br />         // Si se olvida, la deserialización en la próxima petición fallará y nuestro objeto<br />         // SoapObject no será persistente entre las peticiones.<br />         </span><span style="color: #007700">return array(</span><span style="color: #DD0000">'myvar1'</span><span style="color: #007700">,</span><span style="color: #DD0000">'myvar2'</span><span style="color: #007700">);<br />     }<br /> }<br /><br /> try {<br />     </span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br />     </span><span style="color: #0000BB">$server </span><span style="color: #007700">= new </span><span style="color: #0000BB">SoapServer</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'uri' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'REQUEST_URI'</span><span style="color: #007700">]));<br />     </span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setClass</span><span style="color: #007700">(</span><span style="color: #DD0000">'MyFirstPersistentSoapServer'</span><span style="color: #007700">);<br />     </span><span style="color: #FF8000">// setPersistence() DEBE ser llamada después de setClass(), ya que el comportamiento de setClass()<br />     // afecta SESSION_PERSISTENCE_REQUEST.<br />     </span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setPersistence</span><span style="color: #007700">(</span><span style="color: #0000BB">SOAP_PERSISTENCE_SESSION</span><span style="color: #007700">);<br />     </span><span style="color: #0000BB">$server</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">handle</span><span style="color: #007700">();<br /> } catch(</span><span style="color: #0000BB">SoapFault $e</span><span style="color: #007700">) {<br />     </span><span style="color: #0000BB">error_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"SOAP ERROR: "</span><span style="color: #007700">. </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMessage</span><span style="color: #007700">());<br /> }<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-soapserver.setpersistence-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="soapserver.setclass.php" class="methodname" rel="rdfs-seeAlso">SoapServer::setClass()</a> - Configura la clase que ser&aacute; utilizada para gestionar las peticiones SOAP</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>