<?php
/**
* @author Gaetano Giunta
- * @copyright (C) 2006-2019 G. Giunta
+ * @copyright (C) 2006-2020 G. Giunta
* @license code licensed under the BSD License: see file license.txt
*/
namespace PhpXmlRpc;
+use PhpXmlRpc\Helper\Logger;
+
/**
* PHP-XMLRPC "wrapper" class - generate stubs to transparently access xmlrpc methods as php functions and vice-versa.
* Note: this class implements the PROXY pattern, but it is not named so to avoid confusion with http proxies.
* - bool debug set it to 1 or 2 to see debug results of querying server for method synopsis
* - int simple_client_copy set it to 1 to have a lightweight copy of the $client object made in the generated code (only used when return_source = true)
*
- * @return \closure|array|false false on failure, closure by default and array for return_source = true
+ * @return \closure|string[]|false false on failure, closure by default and array for return_source = true
*/
public function wrapXmlrpcMethod($client, $methodName, $extraOptions = array())
{
* @param string $newFuncName
* @param array $mSig
* @param string $mDesc
- * @return array
+ * @return string[] keys: source, docstring
*/
public function buildWrapMethodSource($client, $methodName, array $extraOptions, $newFuncName, $mSig, $mDesc='')
{
// (this provides for future expansion or subclassing of client obj)
if ($verbatimClientCopy) {
foreach ($client as $fld => $val) {
- if ($fld != 'debug' && $fld != 'return_type') {
+ /// @todo in php 8.0, curl handles became objects, but they have no __set_state, thus var_export will
+ /// fail for xmlrpc_curl_handle. So we disabled copying it.
+ /// We should examine in depth if this change can have side effects - at first sight if the
+ /// client's curl handle is not set, all curl options are (re)set on each http call, so there
+ /// should be no loss of state...
+ if ($fld != 'debug' && $fld != 'return_type' && $fld != 'xmlrpc_curl_handle') {
$val = var_export($val, true);
$code .= "\$client->$fld = $val;\n";
}