# SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistence — Establece el modo de persistencia de SoapServer

### Descripción

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

Esta función permite cambiar el estado de persistencia de un objeto SoapServer entre peticiones. Esta función permite guardar datos entre peticiones usando sesiones de PHP. Este método solamente tiene efecto en un SoapServer después de exportar funciones utilizando SoapServer::setClass().

> Nota:

> La persistencia de `SOAP_PERSISTENCE_SESSION` solamente hace persistentes a los objetos de la clase dad, no los datos estáticos de la clase. En este caso, use $this->bar en lugar de self::$bar.

> Nota:

> `SOAP_PERSISTENCE_SESSION` serializa datos en el objeto de clase entre peticiones. Para poder adecuadamente utilizar recursos (p.ej. PDO), deberían usarse los métodos mágicos __wakeup() y __sleep().

### Parámetros

`mode`

  Una de las constantes `SOAP_PERSISTENCE_XXX`.

  `SOAP_PERSISTENCE_REQUEST` - Los datos de SoapServer no persisten entre peticiones. Este es el comportamiento predeterminado de cualquier objeto SoapServer después de llamar a setClass.

  `SOAP_PERSISTENCE_SESSION` - Los datos de SoapServer persisten entre peticiones. Esto se lleva a cabo serializando los datos de la clase SoapServer en $_SESSION['_nombre_sesión_falso'], ya que session_start() debe invocarse antes de establecer este modo de persistencia.

### Valores devueltos

No devuelve ningún valor.

### Ejemplos

Ejemplo #1 Ejemplo de SoapServer::setPersistence()

`<?php
class MyFirstPersistentSoapServer {
private $resource; // (Tal como PDO, mysqli, etc..)
public $mivar1;
public $mivar2;
public function __construct() {
$this->__wakeup(); // Estamos llamando nuestro wakeup para manejar nuestro recurso
}
public function __wakeup() {
$this->resource = CodeToStartOurResourceUp();
}
public function __sleep() {
// Nos aseguramos de omitir $resource aquí, por lo que nuestro datos de sesión persisten
// Un fallo resultará en el fallo durante la deserialilzación de datos
// en la próxima petición; por lo tanto, nuestro SoapObject no sería persistente entre peticiones.
return array('mivar1','mivar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence DEBE invocarse después de setClass, debido a que el comportamiento
// de setClass establece SESSION_PERSISTENCE_REQUEST tras promulgar el método.
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP ERROR: ". $e->getMessage());
}
?>`

### Ver también

- SoapServer::setClass() - Define la clase que controla las peticiones SOAP