基本上这就是我正在做的事情:
我使用 PHPXMLRPC 与 Odoo 进行通信。
本质上,要针对我需要发送的每个请求进行通信,需要遵循以下结构:
//The database I wish to connect too
$msg->addParam(new xmlrpcval($this->dbname, "string"));
//The logged in user id
$msg->addParam(new xmlrpcval($this->userID, "int"));
//The logged in users password
$msg->addParam(new xmlrpcval($this->password, "string"));
//The model
$msg->addParam(new xmlrpcval("project.project", "string"));
//The method Im requesting to call
$msg->addParam(new xmlrpcval("read", "string"));
//Query parameters
$msg->addParam(new xmlrpcval($id_list, "array"));
$msg->addParam(new xmlrpcval($field_list, "array"));
现在我编写了一个类,它在其构造函数中将实例变量设置为传递给其构造函数的值,即
class PHPClient{
private $userName;
private $password;
private $dbname;
private $server_url;
private $userID;
public function __construct($server_url, $database, $user, $password)
{
$this->server_url = $server_url;
$this->dbname = $database;
$this->userName = $user;
$this->password = $password;
$this->userID = False;
}
在某些情况下,我希望在其他地方再次使用同一个对象,也许是在另一个页面中。与其要求用户再次有效地“登录”并再次输入他们的所有详细信息然后必须创建另一个对象,不如将 PHPClient 对象序列化并存储在会话中然后存储在我需要使用的任何其他页面中是否足够安全对象以验证用户是否已登录并具有足够的权限,然后反序列化该对象以执行任何进一步的 RPC 请求?