SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistenceSoapServer の持続モードを設定する

説明

public SoapServer::setPersistence(int $mode): void

この関数により、SoapServer オブジェクトの永続状態をリクエスト間で変更できるようになります。 この関数は、リクエスト間でのデータの保存に PHP のセッションを使います。 このメソッドが SoapServer に影響を及ぼすのは、SoapServer::setClass() を使って関数をエクスポートした後となります。

注意:

持続モード SOAP_PERSISTENCE_SESSION は、そのクラスのオブジェクトについてのみ持続させます。 クラスのスタティックなデータについては対象となりません。 self::$bar ではなく $this->bar を使用しましょう。

注意:

SOAP_PERSISTENCE_SESSION は、クラスのオブジェクト上のデータもリクエスト間でシリアライズします。 リソース (PDO など) を適切に扱うには、マジックメソッド __wakeup() および __sleep() を使う必要があります。

パラメータ

mode

SOAP_PERSISTENCE_* 定数のうちの一つ

SOAP_PERSISTENCE_REQUEST - SoapServer のデータはリクエスト間で持続しません。 これは、SoapServer オブジェクトで setClass をコールした直後のデフォルトの挙動です。

SOAP_PERSISTENCE_SESSION - SoapServer のデータをリクエスト間で持続させます。 これを実現するために、SoapServer クラスのデータをシリアライズして $_SESSION['_bogus_session_name'] に格納します。 そのため、このモードを設定する前に session_start() をコールしておく必要があります。

戻り値

値を返しません。

例1 SoapServer::setPersistence() の例

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

参考