phpxmlrpc / polyfill-xmlrpc
原生 XML-RPC 扩展公开的 API 的纯 PHP 重新实现
Requires
- php: ^5.4.0 || ^7.0 || ^8.0
- phpxmlrpc/phpxmlrpc: ^4.10.2
Requires (Dev)
- ext-curl: *
- phpunit/phpunit: ^4.8 || ^5.0 || ^8.5.12
- phpunit/phpunit-selenium: *
- yoast/phpunit-polyfills: *
Suggests
- ext-iconv: Required when using anything other than utf-8 as target encoding for the decoded xml
- ext-xmlrpc: Recommended for running the test suite. We can not declare it in require-dev because it is missing in php 8
Provides
- ext-xmlrpc: *
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_descriptions
和xmlrpc_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 文件中的条款约束