Flexアプリケーションの作成
PHPコードの準備が整ったので、次に、PHPクラスを呼び出すFlexコードを作成することにします。まず、Eclipseの画面右上のアイコンをクリックし、画面がFlex開発パースペクティブになっていることを確認します。そして、flex_php.mxmlファイルを開きます。
ここではサーバと通信するためにRemoteObjectを使用するので、mx:RemoteObject
タグを追加します。destination
属性とsource
属性の値を「MyService」に設定します(これがPHPのクラス名です)。endpoint
属性の値としては、amfphp/gateway.phpファイルのURLを設定します。筆者のマシン環境では、このURLはhttp://localhost/amfphp/gateway.php
になります。また、id
属性の値として「myRPC」を入力し、このオブジェクトに名前を付けておきます。完成したコードは次のようになります。
<mx:RemoteObject id="myRPC" destination="MyService" source="MyService" endpoint="http://localhost/amfphp/gateway.php"/>
次に、MyServiceのhelloWorld()
メソッドを呼び出し、そして、所定の引数に値を設定するためのコンポーネントが必要となります。ラベル、テキスト入力ボックス、ボタンのレイアウトを整えるために、アプリケーションにmx:HBox
コンポーネントを追加します。ここでは、 TextInputのidを「myText」とし、ボタンのclickイベントから所定のservice
メソッドが呼び出されるように設定します。完成したコードは次のようになります。
<mx:HBox top="10" left="10"> <mx:Label text="Name value:"/> <mx:TextInput id="myText" width="150"/> <mx:Button label="Call MyService->helloWorld()" click="myRPC.helloWorld(myText.text)"/> </mx:HBox>
最後に、結果およびエラーを処理するために、RemotesObjectに何らかのイベントリスナを定義します。MXMLアプリケーションにmx:Script
タグを追加し、この中にRemoteObjectが結果を返す際に呼び出される関数と、エラーが発生した際に呼び出される関数の2つを定義します。これらの関数は、単にそれぞれの旨を伝えるメッセージを表示するだけです。
<mx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; private function resultListener(event:ResultEvent):void { Alert.show(event.result as String, "Result"); } private function faultListener(event:FaultEvent):void { Alert.show(event.fault.faultString as String, "Error"); } ]]> </mx:Script>
関数が作成できたら、それぞれが所定のイベントを処理できるように設定し、これらをRemoteObjectにリンクさせる必要があります。次に示すタグの最終行を参考にしてください。
<mx:RemoteObject id="myRPC" destination="MyService" source="MyService" endpoint="http://localhost/amfphp/gateway.php" result="resultListener(event)" fault="faultListener(event)"/>
これでコードの動作検証を行う準備が整いました。ツールバーの「実行」アイコンをクリックし、Flexアプリケーションを起動してみます。アプリケーションがデフォルトのブラウザで開いたら、テキスト入力ボックスに任意の名前を入力し、そのそばのボタンをクリックします。図13に示すような応答が表示されるはずです。