comodojo / xmlrpc
另一个 PHP XMLRPC 解码/编码器
2.0.1
2021-01-31 14:21 UTC
Requires
- php: >=7.4
- comodojo/exceptions: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- scrutinizer/ocular: ^1.8
README
另一个 PHP XMLRPC 解码/编码器。
这是开发分支,请不要在生产环境中使用
主要功能
- 支持
nil
和ex:nil
- 实现真正的、XML 兼容的、HTML 数值实体转换
- 支持 CDATA 值
安装
-
使用 Composer
安装 composer,然后
composer require comodojo/xmlrpc
编码
-
创建编码器实例
// create an encoder instance $encoder = new \Comodojo\Xmlrpc\XmlrpcEncoder(); // (optional) set character encoding $encoder->setEncoding("utf-8"); // (optional) use ex:nil instead of nil $encoder->useExNil(); // (optional) declare special types in $data $encoder->setValueType($data['a_value'], "base64"); $encoder->setValueType($data['b_value'], "datetime"); $encoder->setValueType($data['c_value'], "cdata"); // Wrap actions in a try/catch block (see below) try { /* encoder actions */ } catch (\Comodojo\Exception\XmlrpcException $xe) { /* someting goes wrong during encoding */ } catch (\Exception $e) { /* generic error */ }
-
单次调用
$call = $encoder->encodeCall("my.method", array("user"=>"john", "pass" => "doe")) ;
-
多次调用
$multicall = $encoder->encodeMulticall( array ( "my.method" => array( "user"=>"john", "pass" => "doe" ), "another.method" => array( "value"=>"foo", "param" => "doe" ), );
替代语法(重复方法安全)
$multicall = $encoder->encodeMulticall( array ( array( "my.method", array( "user"=>"john", "pass" => "doe" ) ), array( "another.method", array( "value"=>"foo", "param" => "doe" ) ) );
-
单次调用成功响应
$response = $encoder->encodeResponse( array("success"=>true) );
-
单次调用错误响应
$error = $encoder->encodeError( 300, "Invalid parameters" );
-
多次调用成功/错误(在 $data 中应显式声明 faultString 和 faultCode)
$values = $encoder->encodeResponse( array( array("success"=>true), array("faultCode"=>300, "faultString"=>"Invalid parameters") );
解码
-
创建解码器实例
// create a decoder instance $decoder = new \Comodojo\Xmlrpc\XmlrpcDecoder(); // Wrap actions in a try/catch block (see below) try { /* decoder actions */ } catch (\Comodojo\Exception\XmlrpcException $xe) { /* someting goes wrong during decoding */ }
-
解码单次或多次调用
$incoming_call = $decoder->decodeCall( $xml_data );
在单次请求的情况下,方法将返回一个数组
array ( 0 => "my.method", 1 => array( "param_1" => "value_1", "param_2" => "value_2", ... ) )
在多次调用的情况下
array ( 0 => array ( 0 => "my.method", 1 => array( "param_1" => "value_1", "param_2" => "value_2", ... ) ), 1 => array ( 0 => "my.otherMethod", 1 => array( "param_a" => "value_a", "param_b" => "value_b", ... ) ) )
-
解码响应
$returned_data = $decoder->decodeResponse( $xml_response_data );
文档
贡献
欢迎贡献,并将获得全额认可。请参阅 CONTRIBUTING 获取详细信息。
许可
comodojo/xmlrpc
根据 MIT 许可证(MIT)发布。请参阅 许可文件 获取更多信息。
版权 (c) 2018 Marco Giovinazzi
有关更多信息,请访问 comodojo.org。