A php library for building xmlrpc clients and servers
improved: remove warnings with php 8.1 due to usage of strftime
improved: cast correctly php objects sporting DateTimeInterface
to phpxmlrpc datetime values
improved: added method Client::prepareCurlHandle
, to make it easier to send multiple requests in parallel when using
curl and the server does not support system.multicall
. See new demo file parallel.php
for how this can be done.
fixed: error 'Class "PhpXmlRpc\Exception\PhpXmlrpcException" not found' when including xmlrpc.inc
and on php 8.1
(might also happen on other php versions)
fixed: the benchmark.php
file had seen some tests accidentally dropped
modified the strings used to tell the client to use http/2: to avoid users mistaking 'http2' for the preferred value, we switched to using h2
and h2c
improved: the benchmark.php
file does now also test calls using https and http/2 protocols
http/2 on non-https requests (known as h2c) works in either "prior-knowledge" mode or "upgrade" mode.
Given the fact that upgrade mode is not compatible with POST requests, we switched to using "prior-knowledge" mode for requests sent with the http2
argument passed to the client's constructor or send
method.
NB: this means that requests sent with http2
are only compatible with servers and proxies known to be http/2 compliant.
Please don't use this version, go straight to 4.7.2 or later.
HTTP/2 is supported by both the Client and Server components (with the php cURL extension being required to use it client-side).
To force the client to use http/2 and http/2-tls requests, pass http2
or http2tls
as 3rd argument to Client::send
.
Please don't use this version, go straight to 4.7.2 or later.
fixed: one php warning with php 8 and up
fixed: compatibility with php 8.1
improved: when encoding utf8 text into us-ascii xml, use character entity references for characters number 0-31 (ascii non printable characters), as we were already doing when encoding iso-8859-1 text into us-ascii xml
new: method Server::getDispatchMap()
. Useful for non-child classes which want to f.e. introspect the server
new: increase flexibility in class composition by adopting a Dependency Injection (...ish) pattern: it is now possible to swap out the Logger, XMLParser and Charset classes with similar ones of your own making. Example code:
// 1. create an instance of a custom character encoder
// $myCharsetEncoder = ...
// 2. then use it while serializing a Request:
Request::setCharsetEncoder($myCharsetEncoder);
$request->serialize($funkyCharset);
new: method XMLParser::parse()
acquired a 4th argument
new: method Wrapper::wrapPhpClass
allows to customize the names of the phpxmlrpc methods by stripping the original class name and accompanying namespace and replace it with a user-defined prefix, via option replace_class_name
new: Response
constructor gained a 4th argument
deprecated: properties Response::hdrs
, Response::_cookies
, Response::raw_data
. Use Response::httpResponse()
instead.
That method returns an array which also holds the http response's status code - useful in case of http errors.
deprecated: method Request::createPayload
. Use Request::serialize
instead
deprecated: property Request::httpResponse
improved: Http::parseResponseHeaders
now throws a more specific exception in case of http errors
improved: Continuous Integration is now running on Github Actions instead of Travis
improved: better phpdocs in the the php code generated by the Wrapper class
improved: debugger favicon and page title when used from the phpjsonrpc library
fixed: allow Encoder::decode
to properly support different target character sets for polyfill-xmlrpc decode functions
improved: allow usage of 'epivals' for the 'parameters_type' member of methods definitions in the Server dispatch map
improved: made it easier to subclass the Helper\Charset class by allowing instance
to use late static binding
fixed: reinstated access to xmlrpc_server->dmap
(for users of the v3 API)
fixed: method xmlrpc_encode_entitites
(for users of the v3 API)
improved: split the code of the demo server in multiple files, describing better the purpose of each
new: it is now possible to control the precision used when serializing DOUBLE values via usage of
PhpXmlRpc::$xmlpc_double_precision
fixed: Encoder::encode
would not correctly encode DateTime and DateTimeImmutable objects
improvements to to the Helper\Date class in rejecting invalid date strings
improvements to the Wrapper class in identifying the required arguments types from phpdoc: support 'array[]', 'DateTime' and 'DateTimeImmutable'
improvements to the support of the XMLRPC extension emulation (as provided by the phpxmlrpc/polyfill-xmlrpc package)
improvements in the inline phpdoc: tagged many methods and class member as for internal usage only
minor improvements in the debugger to allow easier integration of phpxmlrpc/jsonrpc and friends
reorganized the test suite to be more manageable
removed obsolete files from the 'extras' folder; updated and moved to the 'demo' folders the perl and python client scripts; moved benchmark.php and verify_compat.php to the 'extras' folder