PHP5 SOAP: как сохранить экземпляр? - PullRequest
0 голосов
/ 10 февраля 2011

Я играю с SOAP и PHP. Но я не могу понять, почему возвращаемый объект, кажется, не сохраняет экземпляр. Позвольте мне сначала показать пример кода, а затем я объясню:

client.php:

  $client = new SoapClient("http://myhost/remote.wsdl");
  try {
    if($client->login("root","toor")) {
        echo $client->getTotal()."\n";
    }
  } catch (SoapFault $exception) {
    echo $exception;
  }

server.php:

class Remote {
  private $auth = false;

  public function login($user, $pass) {
    if($user == "root" && $pass == "toor") {
        $this->auth = true;
        return true;
    } else throw new SoapFault("Server","Access Denied to '$user'.");
  }

  public function getTotal() {
    if($this->auth) {
        return rand(1000,9999);
    } else throw new SoapFault("Server","Error: Not Authorized.");
  }
}

$server = new SoapServer("remote.wsdl");
$server->setClass("Remote");
$server->handle();

Я могу "войти", поэтому возвращаемое значение из $ client-> login равно true . Но когда я вызываю $ client-> getTotal , $ this-> auth равен false (и, таким образом, возникает ошибка).

Что мне нужно сделать, чтобы сохранить значение, которое я установил ранее?

Заранее спасибо ...

1 Ответ

0 голосов
/ 10 февраля 2011

Хорошо! решение было здесь:

http://www.php.net/manual/en/soapserver.setpersistence.php

Это результат:

session_start(); //Important
$server = new SoapServer("remote.wsdl");
$server->setClass("Remote");
$server->setPersistence(SOAP_PERSISTENCE_SESSION); 
$server->handle();

И это все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...