Flash で http 非同期通信する Flash Remoting には AMFPHP、PHPObject、Flap、Coldfusion Component とか複数ありますが、個人的には AMFPHP が好きなのでよく使っているんですが、問題は Flash Remoting で生じるデバッグ方法。

Flash Remoting のデバッグ方法構成図
Remoting 関連のデバッグには大抵 NetConnection Debugger を使ってデバッグしますが、動作が不安定であんまり使用したくありません。そのため PHP 側でテキストを作成しデバッグする"FileDumper"というクラス使用し、サーバ上でこのテキストを vi で直接開いてエラー情報を直接認識した方がかなり効率的で time-effective!実際にアプリケーション作成時にかなり助かってます。
以下、FileDumper サンプルソースになります。
こんな感じで使えばいいですね。// writeDumper class
class FileDumper {
var $_filename;
var $_dump;
// ファイル名を設定する
function setFilename($filename) {
$this->_filename = $filename;
return $this;
}
// ダンプ内容を設定する
function setContent($dump) {
$this->_dump = $dump;
}
// ダンプファイルの書き出しをする
function writeDump($data = null) {
if ($data) {
$this->setContent($data);
}
if(!function_exists('file_put_contents')) {
$fp = fopen($this->_filename, 'a+');
flock($fp, LOCK_EX);
ob_start();
var_dump($this->_dump);
$res = fwrite($fp, ob_get_contents());
ob_end_clean();
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
} else {
ob_start();
var_dump($this->_dump);
$res = file_put_contents($this->_filename, ob_get_contents());
ob_end_clean();
}
}
}
$fd = new FileDumper();
$obj = $fd->setFilename('フルパス/dump.txt');
$obj->writeDump(デバッグ対象変数名);
?>
このクラスを AMFPHP 用の PHP ファイルに組み込むことで、ローカルの開発環境ではなかなか発見しづらいバグや構造体が正しいかなどすぐに認識可能。共有サーバの人はエラーテキストを vi では開けないので多少作業は増えるけど、ひたすら見えない相手にデバッグを行うよりはかなり効率的です。
【環境】
Flash 8 Professional、AMFPHP 1.2、PHP 4、Fedora Core 4











