第5回 AMFPHPを使用してFlexアプリケーションを作成する - Ajax+RIA講座

PHP 中級 講座

くまちゃん先生の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(onResultonFault);
  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を公開ディレクトリにコピーしてブラウザからアクセスします。

HelloWorld.swf実行画面

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

HelloWorld.swf実行結果

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

先ほどHelloWorldService.phpというファイル名でHelloWorldServiceクラスを作成し、showHelloメソッドを作成しました。よって、HelloWorldService.showHelloという形でメソッドを呼び出すことができ、そこで値を取得することができます。

  • 1
  • 2


Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

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

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)