AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门
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/";
作者:洞庭散人

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









クイック スタート: Python でパンダ ライブラリをインストールする方法には、特定のコード サンプルが必要です。 1. 概要 Python は、多くの実用的なライブラリを含む強力な開発エコシステムを備えた、広く使用されているプログラミング言語です。 Pandas は最も人気のあるデータ分析ライブラリの 1 つであり、効率的なデータ構造とデータ分析ツールを提供し、データの処理と分析を容易にします。この記事では、Python に pandas ライブラリをインストールする方法と、対応するコード例を紹介します。 2.Pyをインストールする

このシリーズは、mojs を使用して HTML 要素をアニメーション化する方法を学ぶことから始めます。この 2 番目のチュートリアルでは、引き続き Shape モジュールを使用して、組み込みの SVG シェイプをアニメーション化します。 3 番目のチュートリアルでは、ShapeSwirl と stagger モジュールを使用して SVG シェイプをアニメーション化するその他の方法について説明します。次に、Burst モジュールを使用して、さまざまな SVG 形状をバーストでアニメーション化する方法を学びます。このチュートリアルは、前の 3 つのチュートリアルで紹介した概念に基づいています。まだ読んでいない場合は、まず読むことをお勧めします。基本的なバースト アニメーションの作成 バースト アニメーションを作成する前に最初に行う必要があるのは、Burst オブジェクトをインスタンス化することです。その後、さまざまなプロパティを指定できます

クイック スタート: Go 言語関数を使用したシンプルなオーディオ ストリーミング サービスの実装 はじめに: オーディオ ストリーミング サービスは、今日のデジタル世界でますます人気が高まっており、完全なダウンロードを実行せずにネットワーク上でオーディオ ファイルを直接再生できるようになります。この記事では、この機能をよりよく理解して使用できるように、Go 言語の関数を使用して簡単なオーディオ ストリーミング サービスを迅速に実装する方法を紹介します。ステップ 1: 準備 まず、Go 言語開発環境をインストールする必要があります。公式サイト(https://golan)からダウンロードできます。

タイトル: すぐに始めましょう: 推奨される 5 つの一般的な Go 言語フレームワーク 近年、Go 言語の人気に伴い、プロジェクト開発に Go を使用する開発者が増えています。 Go 言語は、その効率性、シンプルさ、優れたパフォーマンスにより広く注目を集めています。 Go 言語開発では、適切なフレームワークを選択することで開発効率とコード品質を向上させることができます。この記事では、Go 言語で一般的に使用される 5 つのフレームワークを紹介し、読者がすぐに使い始めるのに役立つコード例を添付します。 Gin フレームワーク Gin は、高速かつ効率的な軽量の Web フレームワークです。

クイック スタート: Go 言語関数を使用して簡単な画像認識機能を実装する 今日の技術開発において、画像認識技術が注目を集めています。 Go 言語は高速で効率的なプログラミング言語として、画像認識機能を実装する機能を備えています。この記事では、Go 言語関数を使用して簡単な画像認識関数を実装するクイック スタート ガイドを読者に提供します。まず、Go 言語開発環境をインストールする必要があります。 Go 言語の公式 Web サイト (https://golang.org/) から適切なバージョンをダウンロードできます。

クイック スタート: 5 つの Kafka 視覚化ツールの使用ガイド 1. Kafka 監視ツール: はじめに Apache Kafka は、大量のデータを処理し、高スループットと低遅延を実現できる分散型パブリッシュ/サブスクライブ メッセージング システムです。 Kafka は複雑であるため、Kafka クラスターの監視と管理を支援する視覚化ツールが必要です。 2.Kafka 視覚化ツール: 5 つの主要な選択肢 KafkaManager: KafkaManager はオープンソースの Web コミュニティです

クイック スタート: Go 言語関数を使用して単純なデータ集計関数を実装する ソフトウェア開発では、一連のデータを集計する必要がある状況によく遭遇します。集計操作では、カウント、要約、計算などを行って、データを分析および表示できます。 Go 言語では、関数を使用して単純なデータ集計関数を実装できます。まず、集計したいデータを表すデータ型を定義する必要があります。生徒の成績表があり、各生徒に名前と学年の 2 つのフィールドがあると仮定すると、次の構造を作成できます。

クイック スタート: Go 言語関数を使用して簡単なメッセージ プッシュ機能を実装する 今日のモバイル インターネット時代では、メッセージ プッシュはさまざまな APP の標準機能になりました。 Go 言語は高速かつ効率的なプログラミング言語であり、メッセージ プッシュ関数の開発に非常に適しています。この記事では、Go 言語関数を使用して簡単なメッセージ プッシュ関数を実装する方法を紹介し、読者がすぐに使い始めるのに役立つ対応するコード例を示します。始める前に、メッセージ プッシュの基本原則を理解する必要があります。一般に、メッセージ プッシュ機能には 2 つの主要なコンポーネントが必要です。 プッシュ サーバー
