This function allows changing the persistence state of a SoapServer object between requests. This function allows saving data between requests utilizing PHP sessions. This method only has an affect on a SoapServer after it has exported functions utilizing SoapServer::setClass().
Note:
The persistence of
SOAP_PERSISTENCE_SESSION
makes only objects of the given class persistent, but not the class static data. In this case, use $this->bar instead of self::$bar.
Note:
SOAP_PERSISTENCE_SESSION
serializes data on the class object between requests. In order to properly utilize resources (e.g. PDO), __wakeup() and __sleep() magic methods should be utilized.
One of the SOAP_PERSISTENCE_XXX constants.
SOAP_PERSISTENCE_REQUEST
- SoapServer data does not persist between requests. This is the default behavior of any SoapServer object after setClass is called.
SOAP_PERSISTENCE_SESSION
- SoapServer data persists between requests. This is accomplished by serializing the SoapServer class data into $_SESSION['_bogus_session_name'], because of this session_start() must be called before this persistence mode is set.
No value is returned.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php class MyFirstPersistentSoapServer { private $resource ; // (Such as PDO, mysqli, etc..) public $myvar1 ; public $myvar2 ; public function __construct() { $this ->__wakeup(); // We're calling our wakeup to handle starting our resource } public function __wakeup() { $this ->resource = CodeToStartOurResourceUp(); } public function __sleep() { // We make sure to leave out $resource here, so our session data remains persistent // Failure to do so will result in the failure during the unserialization of data // on the next request; thus, our SoapObject would not be persistent across requests. return array ( 'myvar1' , 'myvar2' ); } } try { session_start(); $server = new SoapServer(null, array ( 'uri' => $_SERVER [ 'REQUEST_URI' ])); $server ->setClass( 'MyFirstPersistentSoapServer' ); // setPersistence MUST be called after setClass, because setClass's // behavior sets SESSION_PERSISTENCE_REQUEST upon enacting the method. $server ->setPersistence(SOAP_PERSISTENCE_SESSION); $server ->handle(); } catch (SoapFault $e ) { error_log ( "SOAP ERROR: " . $e ->getMessage()); } ?> |
Please login to continue.