基本的にこれは私がやっていることです:
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 要求を実行しますか?