PHPRPC 是一個輕型的、安全的、跨網際的、跨語言的、跨平台的、跨環境的、跨域的、支持復雜對象傳輸的、支持引用參數傳遞的、支持內容輸出重定向的、支持分級錯誤處理的、支持會話的、面向服務的高性能遠程過程調用協議。
PHPRPC 與其它 ajax 框架不同,PHPRPC 遵循的是“只做一件事,並把它做好”的原則。它只負責數據傳輸,並且將傳輸做到最好!它將你以前用傳統的 ajax 方式做不到或者很難做到的事情變得輕而易舉!
相信好多人選擇 PHPRPC 的一個主要原因就是它能夠讓你開發 ajax 應用變得更加容易!盡管 PHPRPC 的強大之處不僅限於此,但我不得不承認,這確實是 PHPRPC 的一大亮點!
所以,我們的第一站,就來看看如何用 PHPRPC 3.0 來編寫 ajax 應用吧。
下 面我們舉一個最簡單的例子(甚至可以算是無聊的例子 :mrgreen: )來說明如何使用 PHPRPC 3.0 編寫 ajax 應用。這個例子很好的說明了上面所提到的 MVC 模式如何具體的工作。這裡我們先以 PHP 為服務器端的情況為例來說明。我們的第一個例子很簡單,客戶端輸入一段字符串,然後服務器端計算出它的 SHA1 值。
?<?php
require_once
(
"../php/phprpc_server.php"
);
$server
=
new
PHPRPC_Server();
$server
->add(
"sha1"
);
$server
->start();
?>
只有這麼簡單的 4 行代碼,就把 PHP 內置的 sha1 函數發布了。現在,客戶端可以直接使用這個函數了。
?<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>計算 SHA1</title>
<script type=
"text/javascript"
src=
"../js/compressed/phprpc_client.js"
></script>
<script type=
"text/javascript"
>
var
rpc =
new
PHPRPC_Client(
'sha1.php'
, [
'sha1'
]);
function
$(id) {
return
document.getElementById(id);
}
function
showResult(result) {
$(
'sha1'
).value = result;
}
function
sha1() {
var
input = $(
'sha1'
).value;
$(
'sha1'
).value =
"Loading..."
;
rpc.sha1(input, showResult);
}
</script>
</head>
<body>
<input type=
"text"
id=
"sha1"
/>
<input type=
"button"
value=
"計算 SHA1"
onclick=
"sha1()"
/>
</body>
</html>
這個例子非常簡單,並且跟 PHPRPC 有關的只有兩條語句,一條是:
?var
rpc =
new
PHPRPC_Client(
'sha1.php'
, [
'sha1'
]);
這條語句用來創建一個 PHPRPC_Client 對象,第一個參數是服務器地址,這裡可以用相對路徑,也可以用絕對路徑。
而且這個路徑可以跨域!因此你可以做跨域的應用!
第二個參數是你需要使用的服務器端的函數名列表,所以,雖然我們這裡只有一個函數,也要寫成數組的形式。這樣我們就有了一個可以調用服務器端方法的客戶端對象了。
那該如何調用呢?我們來看第二條關於 PHPRPC 的語句:
?rpc.sha1(input, showResult);
這條語句相當簡單,你會發現我們直接使用了服務器端發布的函數名作為 rpc 對象的一個方法來調用。它的第一個參數就是 sha1 函數的參數值。第二個參數是個函數,這個是回調函數,也就是說,當服務器端方法執行完之後就會自動調用這個函數來完成結果的處理。它是在前面定義的,你會 發現它有一個參數 result,這個參數就是我們的遠程過程 sha1 的返回值,它是通過回調函數的這個參數傳入的。