<?php
class MyFirstPersistentSoapServer {
private $resource; // (wie z. B. PDO, mysqli usw.)
public $myvar1;
public $myvar2;
public function __construct() {
$this->__wakeup(); // Wir rufen unser wakeup auf, damit die Ressource verwendet werden kann
}
public function __wakeup() {
$this->resource = CodeToStartOurResourceUp();
}
public function __sleep() {
// Wir stellen sicher, dass $resource hier ausgelassen wird, damit
// unsere Sessiondaten persistent bleiben. Versäumen wir dies, wird das
// Deserialisieren der Daten bei der nächsten Anfrage fehlschlagen;
// folglich wäre unser SoapObject nicht anfrageübergreifend persistent.
return array('myvar1','myvar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence MUSS nach setClass aufgerufen werden, weil setClass
// SESSION_PERSISTENCE_REQUEST setzt sobald die Methode ausgeführt wird.
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP FEHLER: ". $e->getMessage());
}
?>