Устанавливает режим сохранения SoapServer

# SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistence — Устанавливает режим сохранения SoapServer

### Описание

public function SoapServer::setPersistence(int `$mode`): void

Эта функция позволяет изменять режим сохранения объекта SoapServer между запросами. Эта функция позволяет сохранять данные между запросами используя механизм сессий PHP. Этот метод влияет только на SoapServer после экспорта функций, используя SoapServer::setClass().

> Замечание:

> Сохранение `SOAP_PERSISTENCE_SESSION` гарантирует сохранение только объектов заданного класса, но не статические данные класса. В этом случае используйте $this->bar вместо self::$bar.

> Замечание:

> `SOAP_PERSISTENCE_SESSION` сериализует данные объекта класса и сохраняет их между запросами. Для корректной работы с ресурсами (например, PDO), следует использовать магические методы __wakeup() и __sleep().

### Список параметров

`mode`

  Одна из констант `SOAP_PERSISTENCE_*`.

  `SOAP_PERSISTENCE_REQUEST` - данные SoapServer не сохраняются между запросами. Это поведение по умолчанию любого объекта SoapServer после вызова setClass.

  `SOAP_PERSISTENCE_SESSION` - данные SoapServer сохраняются между запросами. Это достигается путём сериализации объекта SoapServer в $_SESSION['_bogus_session_name'], следовательно необходимо вызвать session_start() перед включением этого режима.

### Возвращаемые значения

Функция не возвращает значения после выполнения.

### Примеры

Пример #1 Пример использования SoapServer::setPersistence()

    <?php
     class MyFirstPersistentSoapServer {
         private $resource; // (Такие как PDO, mysqli и т.д.)
         public $myvar1;
         public $myvar2;

         public function __construct() {
             $this->__wakeup(); // Вызываем __wakeup для пересоздания $resource
         }

         public function __wakeup() {
             $this->resource = CodeToStartOurResourceUp();
         }

         public function __sleep() {
             // Не сохраняем $resource здесь.
             // Ошибка в этом методе приведёт к тому, что при последующей десериализации
             // мы не сможем восстановить состояние объекта.
             return array('myvar1','myvar2');
         }
     }

     try {
         session_start();
         $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
         $server->setClass('MyFirstPersistentSoapServer');
         // setPersistence НЕОБХОДИМО вызвать после setClass, поскольку setClass
         // принудительно устанавливает SESSION_PERSISTENCE_REQUEST.
         $server->setPersistence(SOAP_PERSISTENCE_SESSION);
         $server->handle();
     } catch(SoapFault $e) {
         error_log("ОШИБКА SOAP: ". $e->getMessage());
     }
    ?>

### Смотрите также

- SoapServer::setClass() - Устанавливает класс, который обрабатывает SOAP-запросы

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open