为了让大家都知道phprpc的棒,我特转载马哥原创的文章一篇

      之所以叫做PHPRPC,是因为它采用了PHP序列化格式作为数据交换格式,从这一点来说,它同XML-RPCJSON-RPC的命名方式差不多。当然,也许叫PSFRPC可能会更好(PSF表示PHP Serialize Format)。不过叫这个名字还有另外一个原因,就是它最初的实现确实是用PHP语言编写的,而且当时确实没有考虑要用其它语言来实现。从这一点上来说,它确实不是一个好名字。

PHPRPC 实用教程(一)——让 ajax 编程更容易
本教程不打算写成一份面面俱到但枯燥无味的 API 手册,而是要把 PHPRPC 中从最基本的用法到高级的应用技巧,以生动活泼的实例展示给大家。

如果你对 PHPRPC 感兴趣的话,那么我们就开始 PHPRPC 之旅吧!

让 ajax 编程更容易

大部分 ajax 框架都很庞大,不但处理传输,而且更多的工作是负责显示的处理,更有甚者,还要用服务器端程序生成客户端的 JavaScript,或者把客户端 JavaScript 本身改造一番。

PHPRPC 与其它 ajax 框架不同,PHPRPC 遵循的是“只做一件事,并把它做好”的原则。它只负责数据传输,并且将传输做到最好!它将你以前用传统的 ajax 方式做不到或者很难做到的事情变得轻而易举!

相信好多人选择 PHPRPC 的一个主要原因就是它能够让你开发 ajax 应用变得更加容易!尽管 PHPRPC 的强大之处不仅限于此,但我不得不承认,这确实是 PHPRPC 的一大亮点!  

所以,我们的第一站,就来看看如何用 PHPRPC 3.0 来编写 ajax 应用吧。

实例

你可以将 PHPRPC 看作一个新的 MVC 模式,用户的服务器端代码只负责模型,用户浏览器中的客户端代码只负责视图,而 PHPRPC 作为控制器,负责客户端和服务器端的通信。如下图所示:
1. |   Model    Controller    View    |  
2. +----------+            +----------+  
3. |          |----------->|          |  
4. |  Server  |   PHPRPC   |  Client  |  
5. |          |<-----------|          |  
6. +----------+            +----------+ 
 下面我们举一个最简单的例子(甚至可以算是无聊的例子 :mrgreen: )来说明如何使用 PHPRPC 3.0 编写 ajax 应用。这个例子很好的说明了上面所提到的 MVC 模式如何具体的工作。这里我们先以 PHP 为服务器端的情况为例来说明。我们的第一个例子很简单,客户端输入一段字符串,然后服务器端计算出它的 SHA1 值。

OK,先让我们来看看效果吧:http://www.phprpc.org/samples/sha1.html

先来看服务器端代码:
view plaincopy to clipboardprint?
1. <?php  
2. require_once("../php/phprpc_server.php");  
3. $server = new PHPRPC_Server();  
4. $server->add("sha1");  
5. $server->start();  
6. ?> 
 只有这么简单的 4 行代码,就把 PHP 内置的 sha1 函数发布了。现在,客户端可以直接使用这个函数了。
view plaincopy to clipboardprint?
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
2. <html xmlns="http://www.w3.org/1999/xhtml"> 
3.  
4. <head> 
5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
6. <title>计算 SHA1</title> 
7. <script type="text/javascript" src="../js/compressed/phprpc_client.js"></script> 
8. <script type="text/javascript"> 
9. var rpc = new PHPRPC_Client('sha1.php', ['sha1']);  
10.  
11. function $(id) {  
12.     return document.getElementById(id);  
13. }  
14.  
15. function showResult(result) {  
16.     $('sha1').value = result;  
17. }  
18.  
19. function sha1() {  
20.     var input = $('sha1').value;  
21.     $('sha1').value = "Loading...";  
22.     rpc.sha1(input, showResult);  
23. }  
24. </script> 
25. </head> 
26. <body> 
27.     <input type="text" id="sha1" /> 
28.     <input type="button" value="计算 SHA1" οnclick="sha1()" /> 
29. </body> 
30. </html> 
 这个例子非常简单,并且跟 PHPRPC 有关的只有两条语句,一条是:
view plaincopy to clipboardprint?
1. var rpc = new PHPRPC_Client('sha1.php', ['sha1']); 
 这条语句用来创建一个 PHPRPC_Client 对象,第一个参数是服务器地址,这里可以用相对路径,也可以用绝对路径。  而且这个路径可以跨域!因此你可以做跨域的应用!第二个参数是你需要使用的服务器端的函数名列表,所以,虽然我们这里只有一个函数,也要写成数组的形式。这样我们就有了一个可以调用服务器端方法的客户端对象了。

那该如何调用呢?我们来看第二条关于 PHPRPC 的语句:
1.     rpc.sha1(input, showResult); 
 这条语句相当简单,你会发现我们直接使用了服务器端发布的函数名作为 rpc 对象的一个方法来调用。它的第一个参数就是 sha1 函数的参数值。第二个参数是个函数,这个是回调函数,也就是说,当服务器端方法执行完之后就会自动调用这个函数来完成结果的处理。它是在前面定义的,你会发现它有一个参数 result,这个参数就是我们的远程过程 sha1 的返回值,它是通过回调函数的这个参数传入的。

是不是相当简单啊?其实这只是 PHPRPC 在浏览器端的一个最基本的用法。关于更多的用法和技巧我们将在下面几节中继续讨论。 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值