• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

巨好用的 xmlrpc-epi PHP 封装类 (1)_php

php 搞代码 7年前 (2018-06-19) 125次浏览 已收录 0个评论

php 中本身带有一个用 C 语言实现的 xmlrpc 扩展,叫 xmlrpc-epi。因为它是用 C 语言实现的,所以从速度上来说比用 PHP 实现的那些 xmlrpc 扩展要快的多。但是在实际应用中却发现很少有人用这个扩展,大都是用 PHP 脚本实现的 xmlrpc 的扩展。原因可能有以下两点:一是这个扩展需要在服务器上打开,如果没有服务器操作权限,使用这个扩展就不现实了。第二个原因就是这个扩展在 PHP 手册中的说明太少了,而且提供的函数都很基础,要使用的话就很麻烦了。针对第二个问题,我对这个扩展进行了封装,将它封装成了3个类:xmlrpc_error、xmlrpc_client 和 xmlrpc_server。当然最主要的是后两个类,即 xmlrpc_client 和 xmlrpc_server。这两个类大大简化了创建 xmlrpc 客户端和服务器的步骤。

大家可以通过下面的实例来看一下现在创建 xmlrpc 服务器和客户端的步骤有多么简单。

服务器端代码
下载: server.php
<?php
require_once(‘class_xmlrpc.php’);
 
function Add($method, $params) {

http://www.gaodaima.com/46846.html巨好用的 xmlrpc-epi PHP 封装类 (1)_php

    return $params[0] + $params[1];
}
function Sub($method, $params) {
    return $params[0] – $params[1];
}
function Mul($method, $params) {
    return $params[0] * $params[1];
}
function Div($method, $params) {
    return $params[0] / $params[1];
}
 
$xmlrpc_server = new xmlrpc_server();
$xmlrpc_server->register_method(“Math.add”, “Add”);
$xmlrpc_server->register_method(“Math.sub”, “Sub”);
$xmlrpc_server->register_method(“Math.Mul”, “Mul”);
$xmlrpc_server->register_method(“Math.Div”, “Div”);
$xmlrpc_server->call_method();
?>
客户端代码
下载: client.php
<?php
require_once(‘class_xmlrpc.php’);
 
$xmlrpc_client = new xmlrpc_client(‘server.php’, ‘Math’);
$a = 100;
$b = 20;
echo “/$a = $a; /$b = $b <br />”;
echo ‘$a + $b = ‘ . $xmlrpc_client->add($a, $b) . ‘<br />’;
echo ‘$a – $b = ‘ . $xmlrpc_client->sub($a, $b) . ‘<br />’;
echo ‘$a * $b = ‘ . $xmlrpc_client->call(‘Mul’, $a, $b) . ‘<br />’;
echo ‘$a / $b = ‘ . $xmlrpc_client->invoke(‘Math.Div’, $a, $b) . ‘<br />’;
?>
虽然上面的代码很简单,但是还是有两点需要注意的地方的。

第一,xmlrpc 的方法是支持名空间(namespace)的,为了简化调用――省略方法前面的名空间,我们在初始化 $xmlrpc_client 时,给出了一个名空间的参数“Math”,这样下面通过方法名直接调用或者通过call来调用方法时,就可以省略名空间前缀了。如果想要改变名空间,只要给 $xmlrpc_client->namespace 赋值就可以了。如果只是临时改变,也可以通过 invoke 方法来用全名(即带有名空间的方法名)来调用。

第二,xmlrpc 和 PHP5 的方法是区分大小写的,而 PHP4 的方法是不区分大小写的,而且在 PHP4 中,所有的函数或方法名都是储存为小写,因此不论是 add 也好,Sub 也好,最后它们所调用的方法都是小写的。所以 PHP5 中可以直接调用定义中有大写字母的方法,而 PHP4 中却不能。也就是说,如果想要在 PHP4 中直接通过方法名来访问 xmlrpc 方法的话,那么必须保证 xmlrpc 的方法名在定义时是小写的,否则就会产生找不到相应方法的错误。如果要在 PHP4 中调用在定义时就有大写字母的 xmlrpc 方法该怎么办呢?其实很简单,用 call 方法调用就可以了,第一个参数就是要调用的方法名的字符串,这个字符串是可以区分大小写的。也可以用 invoke 方法来调用,不同的地方就是如果有名空间的话,需要明确的写出来。

 

欢迎大家阅读《巨好用的 xmlrpc-epi PHP 封装类 (1)_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:巨好用的 xmlrpc-epi PHP 封装类 (1)_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址