Flex+PHPアプリケーションの構築
プロジェクトを適切に設定できるようになったので、ここでは、AMFPHPを利用してPHPスクリプトと通信する、小さなFlexアプリケーションを開発することにします。オープンソースプロジェクトのAMFPHPを利用すれば、Flexデベロッパーは、FlexからPHPのクラスにリモートプロシージャコールをかけられるようになります。
AMFPHPライブラリのインストール
AMFPHPのアーカイブをダウンロード・解凍します。そして、解凍したファイルを、flex_php-debugフォルダと同じ階層にあたる、Webサーバルートのamfphpフォルダ内に配置します。これでAMFPHPのインストールが完了したことになります。AMFPHPの動作を検証するために、ブラウザを起動し、amfphp/browser
フォルダのURLを入力します。筆者のマシン環境では、http://localhost/amfphp/browser
がこのURLに相当します。動作が正常であれば、図9のようなページが表示されるはずです。このページでは、AMFが利用できるサービスの検出と、それらの動作検証が行えます。
PHPクラスの作成
AMFPHPを利用すれば、FlexアプリケーションからPHPクラスのメソッドコールを行えます。ただし、呼び出すPHPクラスは、必ずamfphp/services
フォルダに配置されている必要があります。
PHPコードを記述するにあたり、このフォルダをZend Studioで使用できれば便利だということは言うまでもありません。しかしここで問題になるのは、開発対象のプロジェクトファイルがサーバのルートフォルダに配置されていないことです(つまり、amfphp/services
フォルダ内にPHPクラスを作成した場合は、FlexPHPプロジェクト上で、このクラスを確認することができません)。幸運にも、この問題に対しては簡単な解決策があります。Eclipseでは、プロジェクトに外部フォルダをリンクできます。Zend Studioの作業画面に戻り、表示がFlex開発パースペクティブになっていることを確認します。そして、プロジェクト名を右クリックし、メニューから新規/その他を選択します。表示されたウィザード上の「フォルダ」を選択し、「次へ」ボタンをクリックします。「新規フォルダ」ウィザードが表示されたら「拡張」ボタンをクリックし、amfphpフォルダを参照します(図10参照)。「終了」ボタンをクリックすると、プロジェクト内に「amfphp」という名のフォルダが新規作成されていることを確認できます。
「新規PHPクラス」ウィザードを起動し、ファイル名(MyService.php)とクラス名(MyService)を入力した後、「終了」ボタンをクリックします(図12参照)。
Eclipseによって新規ファイルが生成され、このファイルが編集可能な状態で開かれます。このクラスはリモートプロシージャコールに用いられるものであることから、少なくとも1つ、メソッドを作成しておく必要があります。ここでは例として、引数を文字列に代入してその結果を返す、以下のコードを使用すると良いでしょう。
<?php class MyService { public function helloWorld($name=NULL) { $ret = 'Hello World, says ' . $name . '!'; return $ret; } } ?>
ブラウザを起動し、amfphp/browser
のURLを開きます。右側の列に、新たなクラスが表示されていることを確認できるはずです。このクラスを選択すると、helloWorld
メソッドの動作検証が行え、何が返されるかを確認することができます。