首页 后端开发 php教程 AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门_PHP

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

Jun 01, 2016 pm 12:18 PM
快速入门

它可以使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 下载地址
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 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)

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语言函数实现简单的图像识别功能 Jul 30, 2023 pm 09:49 PM

快速入门:使用Go语言函数实现简单的图像识别功能在如今的科技发展中,图像识别技术已经成为一个热门的话题。作为一种快速高效的编程语言,Go语言具备了实现图像识别功能的能力。本文将通过使用Go语言函数实现简单的图像识别功能,给读者提供一个快速入门的指南。首先,我们需要安装Go语言的开发环境。可以在Go语言官方网站(https://golang.org/)上下载适

推荐五款Go语言常用框架,让您快速入门 推荐五款Go语言常用框架,让您快速入门 Feb 24, 2024 pm 05:09 PM

Title:快速上手:五款Go语言常用框架推荐近年来,随着Go语言的流行,越来越多的开发者选择采用Go进行项目开发。Go语言以其高效、简洁和性能优越等特点受到了广泛关注。在Go语言开发中,选择适合的框架能够提高开发效率和代码质量。本文将介绍五款Go语言常用框架,并附上代码示例,帮助读者快速上手。Gin框架Gin是一个轻量级的web框架,具有快速高效的特点,

学习使用五种Kafka可视化工具的快速入门 学习使用五种Kafka可视化工具的快速入门 Jan 31, 2024 pm 04:32 PM

快速入门:五种Kafka可视化工具的使用指南1.Kafka监控工具:简介ApacheKafka是一种分布式发布-订阅消息系统,它可以处理大量的数据,并提供高吞吐量和低延迟。由于Kafka的复杂性,需要使用可视化工具来帮助监控和管理Kafka集群。2.Kafka可视化工具:五大选择KafkaManager:KafkaManager是一个开源的Web界

快速入门:使用Go语言函数实现简单的数据可视化折线图展示 快速入门:使用Go语言函数实现简单的数据可视化折线图展示 Jul 30, 2023 pm 04:01 PM

快速入门:使用Go语言函数实现简单的数据可视化折线图展示引言:在数据分析和可视化的领域中,折线图是一种常用的图表类型,可以清晰地展示数据随时间或其他变量的变化趋势。本文将介绍如何使用Go语言函数来实现一个简单的数据可视化折线图展示,并且提供相关的代码实例。一、准备工作在开始之前,需要确保以下几个条件:安装Go语言环境,并设置好相关的环境变量。安装必要的依赖库

快速入门:使用Go语言函数实现简单的消息推送功能 快速入门:使用Go语言函数实现简单的消息推送功能 Jul 31, 2023 pm 02:09 PM

快速入门:使用Go语言函数实现简单的消息推送功能在当今移动互联网时代,消息推送已成为各种APP的标配功能。Go语言是一门快速高效的编程语言,非常适合用来开发消息推送功能。本文将介绍如何使用Go语言函数实现简单的消息推送功能,并提供相应的代码示例,帮助读者快速入门。在开始之前,我们需要了解一下消息推送的基本原理。通常,消息推送功能需要两个主要的组件:推送服务器

See all articles