Activa el modo persistente de SoapServer

# SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistence — Activa el modo persistente de SoapServer

### Descripción

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

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 SoapServer::setClass().

> Nota:

> La constante de persistencia `SOAP_PERSISTENCE_SESSION` hace persistentes únicamente los objetos de la clase dada, pero no los datos estáticos. En este caso, $this->bar en lugar de self::$bar.

> Nota:

> `SOAP_PERSISTENCE_SESSION` serializa los datos del objeto entre las peticiones. En el caso de los recursos (por ejemplo PDO), __wakeup() y __sleep() deben ser utilizadas.

### Parámetros

`mode`

  Una de las constantes `SOAP_PERSISTENCE_*`.

  `SOAP_PERSISTENCE_REQUEST` - Los datos de SoapServer no son persistentes entre las peticiones. Este es el comportamiento por omisión de todo objeto SoapServer después de llamar a setClass().

  `SOAP_PERSISTENCE_SESSION` - Los datos de SoapServer persisten entre las peticiones. Esto se realiza serializando los datos de la clase SoapServer en $_SESSION['_bogus_session_name'], por lo que session_start() debe ser llamada antes de pasar a este modo de persistencia.

### Valores devueltos

No se retorna ningún valor.

### Ejemplos

Ejemplo #1 Ejemplo SoapServer::setPersistence()

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

         public function __construct() {
             $this->__wakeup(); // Se llama a nuestro wakeup para reiniciar nuestro recurso
         }

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

         public function __sleep() {
             // Se asegura de eliminar $resource aquí, así nuestros datos pueden persistir en sesión
             // Si se olvida, la deserialización en la próxima petición fallará y nuestro objeto
             // SoapObject no será persistente entre las peticiones.
             return array('myvar1','myvar2');
         }
     }

     try {
         session_start();
         $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
         $server->setClass('MyFirstPersistentSoapServer');
         // setPersistence() DEBE ser llamada después de setClass(), ya que el comportamiento de setClass()
         // afecta SESSION_PERSISTENCE_REQUEST.
         $server->setPersistence(SOAP_PERSISTENCE_SESSION);
         $server->handle();
     } catch(SoapFault $e) {
         error_log("SOAP ERROR: ". $e->getMessage());
     }
    ?>

### Ver también

- SoapServer::setClass() - Configura la clase que será utilizada para gestionar las peticiones SOAP

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