SoapServer::setPersistence
(PHP 5, PHP 7, PHP 8)
SoapServer::setPersistence — Define o modo de persistência do SoapServer
Descrição
Esta função permite alterar o estado de persistência de um objeto SoapServer entre solicitações. Esta função permite salvar dados entre solicitações utilizando sessões PHP. Este método só tem efeito em um SoapServer após ele ter exportado funções utilizando SoapServer::setClass().
Note:
A persistência de
SOAP_PERSISTENCE_SESSION
faz apenas objetos de uma determinada classe persistentes, mas não os dados estáticos da classe. Neste caso, use $this->bar em vez de self::$bar.
Note:
SOAP_PERSISTENCE_SESSION
serializa dados no objeto de classe entre solicitações. Para utilizar adequadamente os recursos (por exemplo, PDO), __wakeup() e __sleep() métodos mágicos devem ser utilizados.
Parâmetros
mode
-
Uma das constantes
SOAP_PERSISTENCE_*
.SOAP_PERSISTENCE_REQUEST
- Os dados do SoapServer não persistem entre solicitações. Este é o comportamento padrão de qualquer objeto SoapServer após setClass ser chamado.SOAP_PERSISTENCE_SESSION
- Os dados do SoapServer persistem entre as solicitações. Isso é feito serializando os dados da classe SoapServer em $_SESSION['_bogus_session_name'], por causa disso session_start() deve ser chamado antes que este modo de persistência seja definido.
Valor Retornado
Nenhum valor é retornado.
Exemplos
Example #1 Exemplo de 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() {
// Certificamo-nos de deixar $resource de fora aqui, para que nossos dados de sessão permaneçam persistentes
// Não fazer isso resultará em falha durante a desserialização dos dados
// na próxima solicitação; portanto, nosso SoapObject não seria persistente nas solicitações.
return array('myvar1','myvar2');
}
}
try {
session_start();
$server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
$server->setClass('MyFirstPersistentSoapServer');
// setPersistence DEVE ser chamado depois de setClass, porque o comportamento de setClass
// define SESSION_PERSISTENCE_REQUEST ao ativar o método.
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
} catch(SoapFault $e) {
error_log("SOAP ERROR: ". $e->getMessage());
}
?>