SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistenceActiva el modo persistente de SoapServer

Descripción

public 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 devuelve 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