Sets SoapServer persistence mode

# SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistence — Sets SoapServer persistence mode

### 说明

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

This function allows changing the persistence state of a SoapServer object between requests. This function allows saving data between requests utilizing PHP sessions. This method only has an affect on a SoapServer after it has exported functions utilizing SoapServer::setClass().

> 注意:

> The persistence of `SOAP_PERSISTENCE_SESSION` makes only objects of the given class persistent, but not the class static data. In this case, use $this->bar instead of self::$bar.

> 注意:

> `SOAP_PERSISTENCE_SESSION` serializes data on the class object between requests. In order to properly utilize resources (e.g. PDO), __wakeup() and __sleep() magic methods should be utilized.

### 参数

`mode`

  One of the `SOAP_PERSISTENCE_*` constants.

  `SOAP_PERSISTENCE_REQUEST` - SoapServer data does not persist between requests. This is the default behavior of any SoapServer object after setClass is called.

  `SOAP_PERSISTENCE_SESSION` - SoapServer data persists between requests. This is accomplished by serializing the SoapServer class data into $_SESSION['_bogus_session_name'], because of this session_start() must be called before this persistence mode is set.

### 返回值

没有返回值。

### 示例

示例 #1 SoapServer::setPersistence() example

    <?php
     class MyFirstPersistentSoapServer {
         private $resource; // (Such as PDO, mysqli, etc..)
         public $myvar1;
         public $myvar2;

         public function __construct() {
             $this->__wakeup(); // We're calling our wakeup to handle starting our resource
         }

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

         public function __sleep() {
             // We make sure to leave out $resource here, so our session data remains persistent
             // Failure to do so will result in the failure during the unserialization of data
             // on the next request; thus, our SoapObject would not be persistent across requests.
             return array('myvar1','myvar2');
         }
     }

     try {
         session_start();
         $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
         $server->setClass('MyFirstPersistentSoapServer');
         // setPersistence MUST be called after setClass, because setClass's
         // behavior sets SESSION_PERSISTENCE_REQUEST upon enacting the method.
         $server->setPersistence(SOAP_PERSISTENCE_SESSION);
         $server->handle();
     } catch(SoapFault $e) {
         error_log("SOAP ERROR: ". $e->getMessage());
     }
    ?>

### 参见

- SoapServer::setClass() - Sets the class which handles SOAP requests

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