Flash Builder 4 -> PHP&MySQLとの連携

Posted by muchag | Flash Builder 4 |
初回投稿:2010-07-06 (火) 23:36:24 | 最終更新:2010-07-25 (日) 2:16:18

FB4 では、「データ中心型開発(DCD)」が大きな売り文句。

だから、PHP&MySQLなんていう環境にも乗り入れ可能。

今回は FB4 から PHP への接続方法。

PHP への接続


[データ]-[データとサービスに接続]

画面下にあるペインの「データとサービス」タブにある「データとサービスに接続」
をクリック。

または、[データ] から各サービスへの接続を選んでもよい。

 

ダイアログ1


私はPHPを利用するのでPHPを選択。

[データ]-[PHP に接続] など各サービスへの接続を直接指定している場合は
このダイアログは出ない。

 

ダイアログ2


今回はプロジェクトフォルダ直下に
「DbCooperate.php」
という名前のクラスファイルを設置した。

ダイアログの「参照」からこれを選択すると
下の「サービスの詳細」ボックス内の
「サービス名」と「サービスパッケージ」
が自動で入力された。

 

Zendライブラリのインストール


FB4 と PHP との連携は Zend_Amf という
Zend Framework のライブラリを用いて行われるので
ライブラリのインストールをするかどうか聞かれる。
(「AMF」は Actionscript Message Format なわけで、そりゃ使うよね)

「OK」にすると、プロジェクト作成時に設定した「Webルート」に
Zendライブラリがインストールされる。

既にZendライブラリを入れている場合はキャンセルで大丈夫。
XAMPP 1.7.3 には、Zendライブラリの1.9.6がバインドされている。

Zendライブラリがない場合でも、最新版を入れたい場合はやっぱりキャンセル。

Zend Framework 公式:Latest Release of ZF
こちらより最新版を入手できる。
 

Zendライブラリの配置

Zendライブラリの場所を変更したい場合は

プロジェクトフォルダ/bin-debug/amf_config.ini

内の「Zend_Path」を適宜変更する。
 
amf_config.ini

  1. [zend]
  2. ;set the absolute location path of webroot directory, example:
  3. ;Windows: C:\apache\www
  4. ;MAC/UNIX: /user/apache/www
  5. webroot =I:/xampp/htdocs
  6.  
  7. ;set the absolute location path of zend installation directory, example:
  8. ;Windows: C:\apache\PHPFrameworks\ZendFramework\library
  9. ;MAC/UNIX: /user/apache/PHPFrameworks/ZendFramework/library
  10. ;zend_path =
  11.  
  12. [zendamf]
  13. amf.production = false
  14. amf.directories[]=muchabm_3

これの10行目。
先頭の「;」(セミコロン)はコメントアウト用みたいなので、それを削除。
パスは・・・5行目の「webroot」を見る限り、Windows環境でも「\」(バックスラッシュ)を使わなくていいみたい。

というわけで、XAMPPの初期設定通りだとすると10行目は以下のように。

  1. zend_path =I:/xampp/php/PRER

フォルダのネーミングは自由だけど、このパスのすぐ次が「Zend」になるようにパスを表記。
でも、行末のディレクトリ区切り文字はいらないっぽい。
 

ダイアログ3


うまくいっていれば、PHPクラスファイルに予め設定してある
関数あるいはメソッドの一覧が出る。

 

設定結果


一通りの設定が終わると、ワークスペース下部のペインの「データとサービス」タブに
左図上のように表示される。

また、PHPクラスファイルの方をいじると、自動的に反映される。

 

また、左上ペインの「パッケージエクスプローラ」を見ると
プロジェクトフォルダ/src 以下に

services.dbcooperate
_Super_DbCooperate.as
DbCooperate.as

ができていることがわかる。

_Super_DbCooperate.as には自分が作ったPHPクラスの関数やメソッドが含まれていて
連携用の準備ができたんだなぁ という実感を持つことができる。
 

調整:入力の型を設定

ここまで自動、自動でやってきたが、さすがに全部は思い通りにいかない。
変数のデータ型だ。
というのも、PHPではデータ型を明示しないからなんだろうな。

入力の型を設定

私がとりあえず作ったメソッド「getTopNodeItems」の引数である「userNodeId」は
IDっていうくらいだからもちろん正数。

そこでこの引数のデータ型を現在の「Object」から「Number」に変更する。

メソッドを右クリックしてコンテクストメニューを表示し
その中から [入力の型を設定] を選択。

 

ダイアログ


ダイアログで「Object」と書かれているところをクリックすると
プルダウンメニューが出現するので
そこから「Number」を選択。

 

調整:戻り値の型を設定

FB4 から PHP へ渡す値のデータ型を設定したら
逆も設定しないとね。

というわけで、上記と同じく関数名からコンテクストメニューを呼び出し
「戻り値の型を設定」をクリック。

戻り値の設定


「サンプルデータから戻り値の型を自動検出」を選んだ場合は
「次へ」

「既存のデータ型を使用」を選んだ場合は
ドロップダウンから適切なデータ型を選び
「終了」

自動検出


「値を入力」というところにサンプルデータ値を入力し「次へ」

 

成功


成功すれば、左図のように出て「終了」することで反映される。

 

失敗


失敗すると左図のようになり、新たに独自のデータ型を作成する方向になるようだ。

この際、「操作によって返されるプロパティ」内のデータ型をいじろうとしても

AMF サービスから返されたプリミティブのプロパティの型は編集できません。
サーバー側のコードを変更してから再試行してください。

というアラートが出る。

サーバー側でいじれって言われてもね。。。
PHPでどうやって型指定するんだろうか。。。
 

後日談

戻り値が配列の場合に、配列内の個々の要素のデータ型をどうしても取得できないので
PHPへの接続のダイアログ2で
「既存の PHP クラスがない場合は、ここをクリックしてサンプルを生成してください。」
を試してみた。


必要事項を入力して「データベースに接続」をクリックすると
裏でゴニョゴニョ接続実験・・・。

成功すると「テーブル」「プライマリキー」2つのドロップダウンが有効になるので
適宜選択。

「OK」すると

こんなアラートが。

自動生成された PHP クラスファイルを見てみると
最初に先ほど入力したDB接続情報がゾロゾロと。

あ~ そういうアラートね。
大丈夫、ちゃんと書き換えますよ~。

で、結果を見たら

うひょ!
戻り値のデータ型がちゃんと自動取得されとるやないかい!

ん~ と考えながら
自動生成された PHP クラスファイルに独自メソッドを追加してみた。
もちろん、自動生成内容を真似っこしてね。

そこから「戻り値の設定」に進んだら

見事に配列戻り値の個々の要素のデータ型も自動取得されてる。

ん~ mysqli だから?
PDOの問題?

わっかりましぇ~ん。
 

後日談 2

PDO でもデータ型を取得できるようになった。
Flash Builder 4 -> PHP でデータ型の指定

Posted by muchag | Flash Builder 4 |
初回投稿:2010-07-06 (火) 23:36:24 | 最終更新:2010-07-25 (日) 2:16:18

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment