首頁 php教程 php手册 AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门

AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门

Jun 06, 2016 pm 08:33 PM
快速入門

AMFPHP是PHP的远程调用(RPC, Remote Procedure Call)工具。

它可以使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/";

作者:洞庭散人
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
Python學習:如何在系統中安裝pandas函式庫 Python學習:如何在系統中安裝pandas函式庫 Jan 09, 2024 pm 04:42 PM

快速入門:Python安裝pandas函式庫的方法,需要具體程式碼範例一、概述Python是一種廣泛使用的程式語言,它擁有強大的開發生態系統,其中包括許多實用的程式庫。而pandas是其中一款非常受歡迎的資料分析庫,它提供了高效的資料結構和資料分析工具,使得資料處理和分析變得更加簡單。本文將介紹如何在Python中安裝pandas庫,並提供對應的程式碼範例。二、安裝Py

快速入門Mojs動畫庫:爆炸模組指南 快速入門Mojs動畫庫:爆炸模組指南 Sep 02, 2023 pm 11:49 PM

我們透過學習如何使用mojs為HTML元素添加動畫來開始本系列。在第二個教學中,我們繼續使用Shape模組製作內建SVG形狀的動畫。第三個教學介紹了使用ShapeSwirl和stagger模組對SVG形狀進行動畫處理的更多方法。現在,我們將學習如何使用Burst模組以突發形式製作不同SVG形狀的動畫。本教程將取決於我們在前三個教程中介紹的概念。如果您還沒有閱讀過它們,我建議您先閱讀它們。創建基本連拍動畫在創建任何突發動畫之前,我們需要做的第一件事是實例化Burst物件。之後,我們可以指定不同屬性

快速入門:使用Go語言函數實現簡單的音訊串流服務 快速入門:使用Go語言函數實現簡單的音訊串流服務 Jul 29, 2023 pm 11:45 PM

快速入門:使用Go語言函數實現簡單的音訊串流服務引言:音訊串流服務在今天的數位化世界中越來越受歡迎,它可以讓我們透過網路直接播放音訊文件,而無需進行完整的下載。本文將介紹如何使用Go語言函數來快速實現一個簡單的音訊串流服務,以便您能更好地理解和使用這項功能。第一步:準備工作首先,您需要安裝Go語言的開發環境。您可以從官方網站(https://golan

快速入門:使用Go語言函數實現簡單的視訊串流服務 快速入門:使用Go語言函數實現簡單的視訊串流服務 Aug 01, 2023 pm 02:29 PM

快速入門:使用Go語言函數實現簡單的視訊串流服務引言:視訊串流服務在現代應用中扮演著重要角色。本文將介紹如何使用Go語言函數來實作一個簡單的影片串流服務。我們將使用Go語言的net/http套件來處理HTTP請求,並結合FFmpeg函式庫來處理視訊串流的編解碼。步驟一:安裝FFmpeg在開始寫程式之前,我們需要先安裝FFmpeg函式庫。可透過FFmpeg官方網站

快速入門:使用Go語言函數實現簡單的圖像辨識功能 快速入門:使用Go語言函數實現簡單的圖像辨識功能 Jul 30, 2023 pm 09:49 PM

快速入門:使用Go語言函數實現簡單的影像辨識功能在現今的科技發展中,影像辨識技術已成為一個熱門的話題。作為一種快速且有效率的程式語言,Go語言具備了實現影像辨識功能的能力。本文將透過使用Go語言函數實現簡單的圖像辨識功能,為讀者提供一個快速入門的指南。首先,我們需要安裝Go語言的開發環境。可在Go語言官方網站(https://golang.org/)上下載適

快速入門:使用Go語言函數實現簡單的資料聚合功能 快速入門:使用Go語言函數實現簡單的資料聚合功能 Jul 29, 2023 pm 02:06 PM

快速入門:使用Go語言函數實現簡單的資料聚合功能在軟體開發中,我們經常會遇到需要對一組資料進行聚合的情況。聚合操作可以統計、匯總、計算等,對資料進行分析展示。而在Go語言中,我們可以使用函數來實作簡單的資料聚合功能。首先,我們需要定義一個資料類型來表示我們要進行聚合的資料。假設我們有一個學生的成績表,每個學生有姓名和成績兩個字段,那麼我們可以創建如下的結構

學習使用五種Kafka視覺化工具的快速入門 學習使用五種Kafka視覺化工具的快速入門 Jan 31, 2024 pm 04:32 PM

快速入門:五種Kafka視覺化工具的使用指南1.Kafka監控工具:簡介ApacheKafka是一種分散式發布-訂閱訊息系統,它可以處理大量的數據,並提供高吞吐量和低延遲。由於Kafka的複雜性,需要使用視覺化工具來幫助監控和管理Kafka叢集。 2.Kafka視覺化工具:五大選擇KafkaManager:KafkaManager是一個開源的Web界

推薦五款Go語言常用框架,讓您快速入門 推薦五款Go語言常用框架,讓您快速入門 Feb 24, 2024 pm 05:09 PM

Title:快速上手:五款Go語言常用框架推薦近年來,隨著Go語言的流行,越來越多的開發者選擇採用Go進行專案開發。 Go語言以其高效、簡潔和性能優越等特點受到了廣泛關注。在Go語言開發中,選擇適合的框架能夠提高開發效率和程式碼品質。本文將介紹五款Go語言常用框架,並附上程式碼範例,幫助讀者快速上手。 Gin框架Gin是一個輕量級的web框架,具有快速高效的特點,

See all articles