Я использую XML-RPC Lib для PHP, чтобы использовать онлайн-подпись.
Это официальный документ:
$doc = array(
"content" => new xmlrpcval($doc_content, "base64"),
"name" => new xmlrpcval($doc_name, "string")
);
$language = "fr";
$signers = array(new xmlrpcval($signer, "struct"));
$request = array(
"documents" => new xmlrpcval(array(new xmlrpcval($doc, "struct")), "array"),
...
Но теперь я хочу поставить несколько документов в запросе. Вот мой код:
$ docs = array ();
foreach ($documents as $document)
{
// Signature field
$field = array(
'page' => new xmlrpcval($document->page, 'int'),
'x' => new xmlrpcval($document->x, 'int'),
'y' => new xmlrpcval($document->y, 'int'),
'label' => new xmlrpcval($document->nom, 'string'),
);
// Document
$docs []= new xmlrpcval(array(
'content' => new xmlrpcval($document->content, 'base64'),
'name' => new xmlrpcval($document->nom, 'string'),
'signatureFields' => new xmlrpcval($field, 'array'),
),'struct');
}
$request = array(
'documents' => new xmlrpcval($docs, 'array'),
И я ловлю эту ошибку:
Сообщение: вызов функции-члена serialize () для необъекта
Кто-то уже использовал эту библиотеку? Потому что я потерялся прямо сейчас ..
Я пришел к выводу, что даже если у нас еще есть массив для использования phpxmlrpc
библиотека, нам нужно определить массив индивидуально, так что если нужно передать массив здесь, это то, что можно сделать,
$listids // this was my one dimensional array
$subs_list_array = array();
foreach ($listids as $id) {
$subs_list_array[] = new xmlrpcval($id, "int");
}
$msg = new xmlrpcmsg(
"contact.subscribe", array(
//Set user id
new xmlrpcval($registration_id, "int"),
new xmlrpcval($subs_list_array, "array")// <- Now I am able to use the array
)
);
Для рекурсивного кодирования массивов php вы также можете использовать php_xmlrpc_encode
функция, которая будет рекурсивно преобразовывать произвольно глубокие структуры данных