它可以使PHP與下述技術無縫通訊:
(1) Flash 和Flex Remoting
(2) JavaScript JSON 和Ajax JSON
(3) XML 和XML-RPC
什麼是RPC
遠端程式呼叫(RPC, Remote Procedure Call) 是一種客戶端與伺服器端交換資料方式。我們可以呼叫本地對象帶對各種參數方法設定回調並接受呼叫結果。我們不用關心發送和接收資料的實作細節。實作細節通常是抽象的,就像我們在呼叫本地方法一樣。
AMFPHP的工作原理
客戶端(Flash / Flex)與伺服器端(PHP) 使用相同的方式描述方法呼叫和複雜資料。客戶端序列化請求並將它傳送到網關AMFPHP。 AMFPHP再執行:
(1) 反序列化請求
(2) 找到對應的遠端服務類別
(3) 實例化類別
(4) 執行安全檢查 (6) 序列化傳回的資料
AMFPHP可以正確地序列化、反序列化複雜型別資料。除了物件和數組,它還支援 resources 資料連接資源,這意味著我們可以透過呼叫遠端方法簡單地返回mysql_query,amfphp 會處理這一切。如果平台支援 (目前來說,Flash Remoting 和Flex Remoting),AMFPHP還可以處理循環引用和自訂資料它也支援簡單的遠端偵錯。還有AMFPHP附帶一個瀏覽器,它可以在創建客戶端程式碼之前測試遠端服務。 AMFPHP 1.0.1也新增了模板,可以自動產生客戶端程式碼。 AMFPHP 1.9 beta更是新增了對AMF3的支援。
簡單範例
下面我們透過一個簡單的登入範例來對AMFPHP有一個初步的認識,將分別從客戶端和伺服器端兩個部分介紹。
一,Flex客戶端:
程式碼
複製程式碼 程式碼如下:
import mx.controlsport mx. Alert;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.rpc.events.*;
public var login_remoteObj:RemoteObject = null;
public function inLoginidem 🎜>{//初始化RemoteObject
this.login_remoteObj = new RemoteObject();
this.login_remoteObj.source = "Login";
this.login_remoteObj。 login_remoteObj.showBusyCursor = true;
this.login_remoteObj.endpoint = "http://localhost/MyTest/amfphp/gateway.php";
this.login_remoteObj.doLoginLogin. 🎜>this.login_remoteObj.doLogin.addEventListener("fault", faultHandler);
}
public function doLogin():void
{//登陸操作,向伺服器提交資料
var name: String = this.txtName.text;
var pwd:String = this.txtPassword.text;
var data:Array = new Array();
data.push(name);
data. push(pwd);
this.login_remoteObj.getOperation("doLogin").send(data);
}
public function loginHandler(event: ResultEvent):void
{//處理伺服器返回的結果
var result:Array = event.result as Array;
var flag:String = result[0];
if (flag == "0") {
Alert.show("登陸失敗: " + result[1]);
} else if (flag == "1") {
Alert.show("登陸成功: " + result[1]);
} else if (flag == "-1") {
Alert.show("異常: " + result[1]);
}
}
public function faultHandler(event: FaultEvent):void
{//出錯處理
Alert.show("sorry,出錯了!!!");
}
}
二,PHP伺服器端
二,PHP伺服器端
二,PHP伺服器端
二,PHP伺服器端1,將amfphp資料夾置於MyTest專案的根目錄下,開啟瀏覽器輸入下述位址驗證amfphp是否安裝成功
複製程式碼
程式碼如下:
http://localhost/MyTest/amfphp/gateway.php
複製代碼
程式碼如下:
class Login
{
public function doLogin($data)
{
$result = array();
try {
$name = array_shift($data);
$pwd = array_shift($data);
if ($name == "phinecos" && $pwd == "123") {
$result[] = "1";
$result[] = "you are valid user!";
} else {
$result[] = "0";
$result [] = "login failed";
}
} catch (Exception $ex) {
$result[] = "-1";
$result[] = $ex->getMessage( );
}
return $result;
}
}
?>
複製程式碼
程式碼如下:
$servicesPath = "../BusinessLogic/";
AMFPHP 下載位址
以上就介紹了 AMFPHP php遠端呼叫RPC, Remote Procedure Call工具 快速入門教程,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。