phpxmlrpc/polyfill-xmlrpc

原生 XML-RPC 扩展公开的 API 的纯 PHP 重新实现

1.0.0 2024-04-15 11:49 UTC

This package is auto-updated.

Last update: 2024-08-23 13:04:10 UTC


README

原生 XML-RPC 扩展公开的 API 的纯 PHP 重新实现。

最初作为 phpxmlrpc/extras 包的一部分捆绑。

要求

支持从 5.4 到 8.3 的任何 PHP 版本。使用 phpxmlrpc/phpxmlrpc 库作为底层的 XML-RPC 引擎。当您通过 Composer 安装时,它会自动为您拉取。

安装和用法

安装:推荐通过使用 Composer 安装此库。只需将其添加到您的 Composer "require" 部分:

"phpxmlrpc/polyfill-xmlrpc": "^1.0.0"

用法:一旦您的自动加载配置设置正确(通常由 Composer 为您处理),您就可以在您的代码中使用在 https://php.ac.cn/manual/en/ref.xmlrpc.php 描述的所有函数。

与原始扩展的差异

进行中!

此库尚未完全完成,但对于大多数用户来说应该足够好了。

缺少的主要功能包括

  • 字符集处理:目前仅支持 utf-8 和 iso-8859-1 编码;默认为 iso-8859-1,utf-8 通过
    • 使用 $encoding 参数调用 xmlrpc_decode()xmlrpc_decode_request()
    • $options 参数中设置 'encoding' => 'UTF-8''escaping' => 'markup' 调用 xmlrpc_encode_request
  • 存在 xmlrpc_parse_method_descriptionsxmlrpc_server_register_introspection_callback 函数,但不起作用
  • xmlrpc_encode_request 函数对 $options 参数的支持不完整

有关与 PHP 扩展行为相比所有已知差异的详细列表,请参阅文件顶部 XmlRpc.php 的注释。

兼容性目标

我们努力以最合理的程度重现 XML-RPC 扩展的行为。

这意味着以下不是此包的目标

  • 能够产生与原生扩展相同的 xml 流,其中“相同”意味着字节对字节相同。例如,生成的 xml 字符串中的空白和元素缩进不同

  • 重现原生扩展的明显错误行为

运行测试

推荐通过提供的 Docker 容器运行库测试套件。有一个方便的 shell 脚本可以简化 Docker 的使用。

完整的操作顺序是

./tests/ci/vm.sh build
./tests/ci/vm.sh start
./tests/ci/vm.sh runtests
./tests/ci/vm.sh stop

# and, once you have finished all testing related work:
./tests/ci/vm.sh cleanup

默认情况下,测试使用基于 Ubuntu 20 Focal 的容器中的 php 7.4 运行。您可以在构建容器之前通过设置环境变量 PHP_VERSION 和 UBUNTU_VERSION 来更改使用的 PHP 和 Ubuntu 版本。

要生成代码覆盖率报告,请运行 ./tests/ci/vm.sh runcoverage

常见问题解答

问题:是否可以指定用于序列化 Double 值的精度?答案:是的,通过将正整数值设置到 \PhpXmlRpc\Polyfill\XmlRpc\XmlRpc::$xmlpc_double_precision

许可协议

使用此软件受 license.txt 文件中的条款约束

License Latest Stable Version Total Downloads

Build Status Code Coverage