<?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());
}
?>