<?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 => 'ru',
  ),
  'this' => 
  array (
    0 => 'soapserver.setpersistence.php',
    1 => 'SoapServer::setPersistence',
    2 => 'Устанавливает режим сохранения 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' => 'ru',
    '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">Устанавливает режим сохранения SoapServer</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-soapserver.setpersistence-description">
  <h3 class="title">Описание</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">
   Эта функция позволяет изменять режим сохранения объекта SoapServer между
   запросами. Эта функция позволяет сохранять данные между запросами используя
   механизм сессий PHP. Этот метод влияет только на SoapServer после экспорта функций,
   используя <span class="methodname"><a href="soapserver.setclass.php" class="methodname">SoapServer::setClass()</a></span>.
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    Сохранение <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> гарантирует
    сохранение только объектов заданного класса, но не статические данные класса.
    В этом случае используйте <var class="varname">$this->bar</var> вместо self::$bar.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> сериализует данные объекта
    класса и сохраняет их между запросами. Для корректной работы с ресурсами
    (например, <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> и
    <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a>.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-soapserver.setpersistence-parameters">
  <h3 class="title">Список параметров</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">mode</code></dt>
     <dd>
      <p class="para">
       Одна из констант <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> - данные SoapServer не сохраняются
       между запросами. Это поведение <strong>по умолчанию</strong>
       любого объекта SoapServer после вызова setClass.
      </p>
      <p class="para">
       <strong><code><a href="soap.constants.php#constant.soap-persistence-session">SOAP_PERSISTENCE_SESSION</a></code></strong> - данные SoapServer сохраняются
       между запросами. Это достигается путём сериализации объекта SoapServer в
       <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION['_bogus_session_name']</a></var>, следовательно
       необходимо вызвать <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> перед включением этого режима.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-soapserver.setpersistence-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Функция не возвращает значения после выполнения.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-soapserver.setpersistence-examples">
  <h3 class="title">Примеры</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Пример #1 Пример использования <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">// (Такие как PDO, mysqli и т.д.)<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">// Вызываем __wakeup для пересоздания $resource<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">// Не сохраняем $resource здесь.<br />         // Ошибка в этом методе приведёт к тому, что при последующей десериализации<br />         // мы не сможем восстановить состояние объекта.<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 НЕОБХОДИМО вызвать после setClass, поскольку setClass<br />     // принудительно устанавливает 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: "</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">Смотрите также</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="methodname"><a href="soapserver.setclass.php" class="methodname" rel="rdfs-seeAlso">SoapServer::setClass()</a> - Устанавливает класс, который обрабатывает SOAP-запросы</span></li>
   </ul>
  </p>
 </div>


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