Home  >  Article  >  Backend Development  >  AMFPHP php remote procedure call (RPC, Remote Procedure Call) tool quick start tutorial_PHP tutorial

AMFPHP php remote procedure call (RPC, Remote Procedure Call) tool quick start tutorial_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:38:19884browse

It enables PHP to communicate seamlessly with the following technologies:
(1) Flash and Flex Remoting
(2) JavaScript JSON and Ajax JSON
(3) XML and XML-RPC
What is RPC
Remote Procedure Call (RPC, Remote Procedure Call) is a way for the client and server to exchange data. We can call local objects with callbacks for various parameter methods and accept the call results. We don't need to worry about the implementation details of sending and receiving data. Implementation details are usually abstract, as if we were calling a native method.
How AMFPHP works
Client-side (Flash/Flex) and server-side (PHP) use the same way to describe method calls and complex data. The client serializes the request and sends it to the gateway AMFPHP. AMFPHP then executes:
 (1) Deserialize request
 (2) Find the corresponding remote service class
 (3) Instantiate the class
 (4) Perform security check
 (5) (Using specified parameters) Call the server-side method
(6) Serialize the returned data
AMFPHP can correctly serialize and deserialize complex type data. In addition to objects and arrays, it also supports resources data connection resources, which means that we can simply return mysql_query by calling the remote method, and amfphp will handle it all. If the platform supports it (currently, Flash Remoting and Flex Remoting), AMFPHP can also handle circular references and custom data. It also supports simple remote debugging. There is also AMFPHP that comes with a browser that can test remote services before creating client code. AMFPHP 1.0.1 also adds templates to automatically generate client code. AMFPHP 1.9 beta adds support for AMF3.
Simple example
Below we will have a preliminary understanding of AMFPHP through a simple login example, which will be introduced from the client side and the server side respectively.
1. Flex client:
Code

Copy code The code is as follows:

import mx.controls.Alert;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.rpc.events.*;
public var login_remoteObj:RemoteObject = null;
public function initLoginRemoteObject():void
{//Initialize 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
{//Login operation, submit data to the server
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
{//Process the results returned by the server
var result:Array = event.result as Array;
var flag:String = result[0];
if (flag == "0") {
Alert.show("Login failed: " + result[1]);
} else if (flag == "1") {
Alert.show("Login successful: " + result[1]) ;
} else if (flag == "-1") {
Alert.show("Exception: " + result[1]);
}
}
public function faultHandler( event: FaultEvent):void
{//Error handling
Alert.show("sorry, something went wrong!!!");
}
}

2. PHP server side
1. Place the amfphp folder in the root directory of the MyTest project, open the browser and enter the following address to verify whether amfphp is installed successfully
Copy the code The code is as follows:

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

amfphp comes through this gateway Locate our service classes and forward requests to these service classes for processing.
2. The Login.php file contains the Login class for processing login requests. This file is placed in the BusinessLogic directory
Code
Copy code The code is as follows:

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. Modify the service path item in globals.php as follows, specify the directory where the service class is located for amfphp
Copy the code The code is as follows:

$servicesPath = "../BusinessLogic/";

Author: Dongting Sanren
AMFPHP download address

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321785.htmlTechArticleIt enables PHP to communicate seamlessly with the following technologies: (1) Flash and Flex Remoting (2) JavaScript JSON and Ajax JSON (3) XML and XML-RPC What is RPC, Remote Procedure...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn