SoapServer::setPersistence

(PHP 5, PHP 7)

SoapServer::setPersistenceEstablece 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