AMFPHP php遠程調用RPC, Remote Procedure Call工具 快速入門教程

來源:互聯網
上載者:User
它可以使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) 執行安全檢查
  (5)(使用指定參數)調用伺服器端方法
  (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.controls.Alert;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.rpc.events.*;
public var login_remoteObj:RemoteObject = null;
public function initLoginRemoteObject():void
{//初始化RemoteObject
this.login_remoteObj = new RemoteObject();
this.login_remoteObj.source = "Login";
this.login_remoteObj.destination = "amfphp";
this.login_remoteObj.showBusyCursor = true;
this.login_remoteObj.endpoint = "http://localhost/MyTest/amfphp/gateway.php";
this.login_remoteObj.doLogin.addEventListener("result", loginHandler);
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伺服器端
1,將amfphp檔案夾置於MyTest項目的根目錄下,開啟瀏覽器輸入下述地址驗證amfphp是否安裝成功

複製代碼 代碼如下:


http://localhost/MyTest/amfphp/gateway.php


amfphp就是通過這個gateway來定位我們的服務類,並將請求轉寄給這些服務類進行處理的。
2,Login.php檔案,包含了處理登陸請求的Login類,此檔案置於BusinessLogic目錄下
代碼

複製代碼 代碼如下:


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;
}
}
?>


3,將globals.php中的服務路徑項修改如下,為amfphp指明服務類所在的目錄

複製代碼 代碼如下:


$servicesPath = "../BusinessLogic/";


作者:洞庭散人
AMFPHP 下載地址

以上就介紹了 AMFPHP php遠程調用RPC, Remote Procedure Call工具 快速入門教程,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.