第5回 AMFPHPを使用してFlexアプリケーションを作成する - Ajax+RIA講座
くまちゃん先生のAjax+Flex講座
Lecutures on PHP
第5回 AMFPHPを使用してFlexアプリケーションを作成する (その1)
はじめに
前回はFlexとAMFPHPについてインストールとそれらの動作確認について説明しましたが、今回は実際にFlexのアプリケーションを作成してその流れを見ていきたいと思います。
Flexアプリケーションの作成
HelloWorldService.phpを作成しAMFPHPでの動作確認まで前回行いました。
では早速FlexのアプリケーションからHelloWorldService.phpのメソッドを呼び出してみましょう。
Flexアプリケーションは、MXMLでユーザインタフェースを記述し、ロジックはActionScriptで記述します。HTMLとJavaScriptの関係のように、MXML内にActionScriptを記述するということもできますが、ビューとロジックを分離するほうが見やすいコードになり、メンテナンスもしやすくなります。
HelloWorld.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" verticalAlign="top">
<mx:Script source="HelloWorld.as" />
<mx:Text id="helloText" text="" fontSize="14" />
<mx:Button id="sendButton" label="送信" click="init();" />
</mx:Application>
HelloWorld.as
import mx.controls.Alert;
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.net.Responder;
private const GATEWAY_URL:String = 'amfGateway.php';
// ゲートウェイスクリプトのパス
/**
* 初期データ読み込み
*/
private function init():void {
var responder:Responder = new Responder(onResult, onFault);
var con:NetConnection = getCon();
con.call('HelloWorldService.showHello', responder);
// AMFPHPのサービスクラス名.メソッド名
}
/**
* コネクション初期化
*/
private function getCon():NetConnection {
var time:Number = (new Date()).getTime();
var con:NetConnection = new NetConnection();
con.connect(GATEWAY_URL + '?time=' + time);
con.objectEncoding = ObjectEncoding.AMF3;
return con;
}
/**
* 成功
*/
private function onResult(etc:*):void {
if (typeof etc == 'string') {
helloText.text = etc;
} else {
Alert.show('文字列ではありません');
}
}
/**
* 失敗
*/
private function onFault(etc:*):void {
Alert.show('通信に失敗しました');
}
このHelloWorld.mxmlをmxmlcコマンドを用いてコンパイルします。
$ mxmlc HelloWorld.mxml $ cp HelloWorld.swf public_html/
コンパイルが完了すると同じディレクトリ内にSWFファイル(HelloWorld.swf)が生成されます。このHelloWorld.swfを公開ディレクトリにコピーしてブラウザからアクセスします。

すると「送信」ボタンが一つだけある画面が表示されます。このボタンをクリックしてください。Flexからゲートウェイスクリプトを介してHelloWorldService.php内のshowHelloメソッドが呼び出され、ボタン上部に「Hello !!」の文字列と現在の日時が表示されます。

HelloWorld.asを見ていただくとわかりますが、ゲートウェイスクリプトのパスを設定している箇所があります。今回はHelloWorld.swf同様の公開ディレクトリ(/var/www/flex/public_html)に設置しています。もし他のディレクトリに設置する場合は適宜変更する必要があります。
また、NetConnectionクラスのcallメソッドでAMFPHPのサービスを呼び出している箇所があります。そこでクラス名.メソッド名という形でPHPのメソッドを呼び出すことができます。
先ほどHelloWorldService.phpというファイル名でHelloWorldServiceクラスを作成し、showHelloメソッドを作成しました。よって、HelloWorldService.showHelloという形でメソッドを呼び出すことができ、そこで値を取得することができます。
- 1
- 2





ページのトップへ


SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。