AMFPHPでHelloWorld!!
Flexを利用してアプリケーションを組むときに[Flex]⇔[サーバ]間との通信をどうしようかなと迷います。WebAPIを組むことになると一苦労。APIを設計するという作業が待っています。Flashには[Flash]⇔[サーバ]間の連携を強力に行うFlashRemotingという方式があってPHPではAMFPHPを使ってできるよと教えられたのでAMFPHPを使ってHello World!!をする実験メモです。
実験に使ったソースコード
Gateway.php
<?php include 'amfphp/core/amf/app/Gateway.php'; function main() { $gateway = new Gateway(); $gateway->disableDebug(); $gateway->setClassPath("."); $gateway->enableGzipCompression(25*1024); $gateway->service(); } // call main function main();
Services.php
<?php class Service { public function sayHello(){ return 'Hello World!!'; } }
main.mxml
<?xml version="1.0" encoding="UTF-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"> <mx:Script> <![CDATA[ import mx.controls.*; import flash.net.*; // ゲートウェイのパス private const GATEWAY:String = "/Gateway.php"; public function doRequest():void { var responder:Responder = new Responder(onSuccess, onFault); var connection:NetConnection = new NetConnection(); connection.connect(GATEWAY); connection.objectEncoding = ObjectEncoding.AMF3; connection.call("Service.sayHello", responder); }; /** 通信成功時 **/ private function onSuccess(any:*):void{ Alert.show(any.toString()); }; /** 通信失敗時 **/ private function onFault(any:*):void{ Alert.show("通信失敗"); }; ]]> </mx:Script> <mx:Button label="テスト" id="idTest" click="doRequest()" /> </mx:Application>
ディレクトリ構成
簡単の為に全てDocumentRoot直下に配置しています。
/main.swf /Service.php /Gateway.php /amfphp/