Zend_Amf_Server + AS3

個人的に勉強していた Zend_Amf_Server を実レベルの仕事で初めて Flash Remoting として使ってみた。プロジェクトは Flash ゲームで、もう 1 人の Flash デベロッパーと連携してゲーム以外の AS3 のバックエンド/モデルクラス/ビュークラス/コントローラ系のプログラム、Remoting 系、PHP/MySQL 開発、サーバ少々を担当。

Zend_Amf_Server は物凄くいいですね。何がいいかって Zend を普通のウェブアプリケーション感覚で開発できるので連携するバックエンド部分を MVC で組めるし、Zend_View_Smarty とか Zend_Db_Table とか Zend_Registry とか Flash と連携することを意識しないで使えるから超楽だ。Zend を使ってる Flash デベロッパーなら学習コストなし。PHP/MySQL 系のウェブアプリケーションに作っていた Zend のクラス群を Flash Remoting 用にそのまま引っ張ってきて再利用できたので、よっぽどシステムがでかくなければ簡単に作れちゃう感じですな。

で、Zend_Amf_Server で注意したい点を忘れないようにメモッておく。

(1)
まずは基本的なエラーがあるか確認するため Zend_Amf_Server の end point になるgateway.php とか server.php をブラウザでアクセス。正常な場合はダウンロードされる。出ないときはプログラム側でエラーがある。

(2)
開発時は setProduction(false) に設定する。(これは必ずリリース時に true かもしくはコメントアウトする。)これで、NetConnection.call で呼んだときに Responder の status イベントハンドラ内でエラーの詳細を取得できる。

$server   =& new Zend_Amf_Server();
$server->setProduction(false);
private function onStatusHandler(fault:Object):void 
{
	for(var key:String in fault) 
	{
		trace(key);
		trace(String(fault[key]));
		trace('===');
	}
}

(3)
"Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.BadVersion" とか Responder の status イベントハンドラ内でエラーが出ているけど詳細が良く分からない場合は、大抵 PHP のクラス側(Flash の View から呼び出されるメソッド群を保持している Controller/Business 的クラス)内で何かかしらエラーが出ているんで、gateway.php の echo 部分をコメントアウトして、クラスをダンプでもしてみる。ここで大抵エラーが返ってるから、display_errors が on なら詳細が見えるはず。

$server   =& new Zend_Amf_Server();
//$server->setClass('UserBusiness');
$response =& $server->handle();
//echo $response;
$ub =& new UserBusiness();
Zend_Debug::dump($ub);

(4)
それでもどうしても分からないエラーに関してはファイルに書き出して Dump 内容を見る必要があるかも。Zend_Mail とかで役立ちました。以前作った FileDumper クラスを PHP 5 に書き換えて、Base の Controller クラスに protected 変数として入れ込んでおいた。

(5)
データ通信には VO を使う。Flex なら AS 側の Model クラスを Bind してるから VO は有効だけど、AS オンリーのプロジェクトでも VO で通信し合って、VO のマッピングには setClassMap クラスを使うのが楽。マッピングしてないでオブジェクトを返すとすべてのコールに対してエラーが発生したりする。

$server->setClassMap('UserVO', 'UserVO');

ということで、flash94 を参考に、フロントエンドに Flex/Cairngorm、バックエンドは Zend_Amf 使って本格的に Flash CMS 作り始めた。1ヶ月で仕上げる。

ページの一番上へ移動

トラックバック

この記事へのトラックバック URL は下記の通りです。
http://www.convexstyle.net/mt/mt-tb.cgi/96

コメントの投稿

初めて投稿される方のコメントは管理者の承認が必要となります。ご了承ください。