SOAP SoapServer::setPersistence

(PHP 5, PHP 7, PHP 8)

SoapServer::setPersistence — SoapServer 지속성 모드를 설정합니다.


설명

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

이 함수를 사용하면 요청 간에 SoapServer 개체의 지속성 상태를 변경할 수 있습니다. 이 함수를 사용하면 PHP 세션을 사용하여 요청 간에 데이터를 저장할 수 있습니다. 이 메서드는 SoapServer::setClass()를 사용하여 함수를 내보낸 후에만 SoapServer에 영향을 줍니다.

메모: SOAP_PERSISTENCE_SESSION의 지속성은 주어진 클래스의 개체만 지속성으로 만들고 클래스 정적 데이터는 만들지 않습니다. 이 경우 self::$bar 대신 $this->bar를 사용하십시오.

메모: SOAP_PERSISTENCE_SESSION은 요청 간에 클래스 개체에 대한 데이터를 직렬화합니다. 리소스(예: PDO)를 적절하게 활용하려면 __wakeup()__sleep() 매직 메서드를 사용해야 합니다.


매개변수

mode
SOAP_PERSISTENCE_XXX 상수 중 하나입니다.

SOAP_PERSISTENCE_REQUEST - SoapServer 데이터는 요청 간에 지속되지 않습니다. 이것은 setClass가 호출된 후 모든 SoapServer 객체의 기본 동작입니다.

SOAP_PERSISTENCE_SESSION - SoapServer 데이터는 요청 간에 유지됩니다. 이것은 SoapServer 클래스 데이터를 $_SESSION['_bogus_session_name']으로 직렬화하여 수행됩니다. 이 지속성 모드가 설정되기 전에 session_start()를 호출해야 하기 때문입니다.


반환 값

값이 반환되지 않습니다.


Examples

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

기타