<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'soapserver.setpersistence.php',
    1 => 'SoapServer-&gt;setPersistence()',
    2 => 'Versetzt einen SoapServer in den Persistenz-Modus',
  ),
  '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' => 'de',
    '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-&gt;setPersistence()</span> &mdash; <span class="dc-title">Versetzt einen SoapServer in den Persistenz-Modus</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-soapserver.setpersistence-description">
  <h3 class="title">Beschreibung</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">
   Diese Funktion erlaubt das Ändern des Persistenzzustands eines SoapServer
   Objekts zwischen Anfragen. Diese Funktion erlaubt das Speichern von Daten
   zwischen Anfragen durch Verwendung von PHP Sessions. Diese Methode hat nur
   Auswirkungen auf den SoapServer, nachdem er Funktionen unter Verwendung von
   <span class="methodname"><a href="soapserver.setclass.php" class="methodname">SoapServer::setClass()</a></span> exportiert hat.
  </p>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Die Option <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> macht nur Objekte
    der angegebenen Klasse persistent, nicht aber ihre statischen Eigenschaften.
    Daher sollten sie <var class="varname">$this->bar</var> anstatt von self::$bar nutzen.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> serialisiert Daten des
    Klassenobjekts zwischen Anfragen. Damit Ressourcen (z. B.
    <span class="classname"><a href="class.pdo.php" class="classname">PDO</a></span>) ordnungsgemäß verwendet werden können, sollten
    die magischen Methoden <a href="language.oop5.magic.php#object.wakeup" class="link">__wakeup()</a> und
    <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a> verwendet werden.
   </p>
 </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-soapserver.setpersistence-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">mode</code></dt>
     <dd>
      <p class="para">
       Eine der
       <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_<span class="replaceable">*</span></a></code></strong>-Konstanten.
      </p>
      <p class="para">
       <strong><code><a href="soap.constants.php#constant.soap-persistence-request">SOAP_PERSISTENCE_REQUEST</a></code></strong> - SoapServer Daten bleiben
       zwischen Anfragen nicht erhalten. Das ist das <strong>standardmäßige</strong> Verhalten von jedem SoapServer
       Objekt nachdem setClass aufgerufen wurde.
      </p>
      <p class="para">
       <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> - SoapServer Daten bleiben
       zwischen Anfragen erhalten. Dies wird durch Serialisierung der SoapServer
       Klassendaten in <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION['_bogus_session_name']</a></var>
       erreicht, weshalb <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> aufgerufen werden
       muss, bevor dieser Persistenzmodus eingestellt wird.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-soapserver.setpersistence-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Es wird kein Wert zurückgegeben.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-soapserver.setpersistence-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>SoapServer::setPersistence()</strong></span>-Beispiel</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">// (wie z. B. PDO, mysqli usw.)<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">// Wir rufen unser wakeup auf, damit die Ressource verwendet werden kann<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">// Wir stellen sicher, dass $resource hier ausgelassen wird, damit<br />         // unsere Sessiondaten persistent bleiben. Versäumen wir dies, wird das<br />         // Deserialisieren der Daten bei der nächsten Anfrage fehlschlagen;<br />         // folglich wäre unser SoapObject nicht anfrageübergreifend persistent.<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 MUSS nach setClass aufgerufen werden, weil setClass<br />     // SESSION_PERSISTENCE_REQUEST setzt sobald die Methode ausgeführt wird.<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 FEHLER: "</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">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="soapserver.setclass.php" class="methodname" rel="rdfs-seeAlso">SoapServer::setClass()</a> - Setzt die Klasse, welche SOAP-Anfragen verarbeitet</span></li>
   </ul>
  </p>
 </div>


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