Browse > Home > Flex3 > PHPQuery: A Simple AS3 Warper of AMFPHP

| Subcribe via RSS

PHPQuery: A Simple AS3 Warper of AMFPHP

三月 25th, 2008 | 251 views | Posted by flashlizi in Flex3

一个简单的amfphp封装,简化了amfphp的使用。
最新更新:增加getServices方法,返回所有可用的services方法集合的数组。需要在amfphp/services目录下增加ServiceUtils.php文件。PHPQuery和ServiceUtils在附件中均有下载。
使用示例:
var gateway:String = "http://localhost/amfphp/gateway.php";
PHPQuery.connect(gateway);
PHPQuery.getServices(onServices);
function onServices(result:Array):void {
for each(var method:* in result) trace(method);
}
var params:String = "www.riaidea.com";
PHPQuery.call("HelloWorld.say", onResult, onFault, params);
function onResult(result:Object):void {
trace(String(result));
}
function onFault(fault:Object):void {
trace(String(fault.description));
}

PHPQuery源码:
package {
import flash.net.NetConnection;
import flash.net.Responder;
public class PHPQuery {
private static var _gateway:String;
private static var netConnection:NetConnection;
//connect to specified amfphp gateway
public static function connect(gateway:String):void {
if (!netConnection) netConnection = new NetConnection();
_gateway = gateway;
netConnection.connect(gateway);
}
//call a php method.
public static function call(command:String, onResult:Function, onFault:Function = null, ...args):void {
var responder:Responder = new Responder(onResult, onFault);
var params:Array = [command, responder].concat(args);
netConnection.call.apply(null, params);
}
//get all services and theirs methods on amfphp
public static function getServices(onResult:Function, onFault:Function = null):void {
PHPQuery.call("ServiceUtils.getServices", function(result:Object) { onResult.call(null, listServices(result)); } , null);
}
//list all services's methods
private static function listServices(result:Object):Array {
var out:Array = [];
for (var i:int = 0; i < result.length; i++) {
var re:Object = result[i];
if (re.children) {
var child:Array = listServices(re.children);
out = out.concat(child);
}else {
for(var m:String in re.methods) {
var method:String = "";
if (re.data) {
method += re.data.replace( /\\/ , ".");
}
method += re.label + "." + m;
out.push(method);
}
}
}
return out;
}
//get the amfphp gateway
public static function get gateway():String {
return _gateway;
}
}
}

点击下载PHPQuery和ServiceUtils文件

Leave a Reply