SabreAMF: FlexをPHP5と連携させるフレームワーク

「SabreAMF」とは、Flexアプリケーション中にAMFPHPを利用してPHP、MySQLと接続、通信サンプルソースコードのAMFPHPと同じ、AirのSWFファイルからPHPが動いているサーバーに接続する為AMFというフォーマットに従って通信を行うPHPライブラリです(実はPHPObject: PHPとFlashのActionScript連携パッケージも同じ機能か)。

SabreAMFを使用することで、AMFフォーマットでFlashからPHPメソッドを呼び出すことができます。

【機能・特徴】

◇ AMF Server/Client
◇ PHP5 OOP
◇ AMF0~AMF3対応
◇ ライセンス:New BSD License

【使用方法】

・SabreAMFの最新ライブラリをhttp://code.google.com/p/sabreamf/downloads/list からダウンロードして、解凍しSabreAMFに改名して、

/PROJECT_DIR/app/vendors/SabreAMF

に配置します。

・パス設定用のファイル


/PROJECT_DIR/app/vendors/sabreamf_ini.php

を作成します。

内容:



・サンプルのコンポーネントsabre_amf.php を


/PROJECT_DIR/app/controllers/components/sabre_amf.php

に設置します。


amfData = $data;

if (method_exists($_cakeController, $method)) {
$res = $_cakeController->{$method}();
} else {
$res = “not found action.”;
}

} else {
$res = “invalid method name.”;
}

} else {
$res = “not found controller.”;
}

return $res;
}

class SabreAmfComponent extends Object {

function initialize(&$controller) {

global $_cakeController;
$_cakeController = $controller;
$controller->isAmf = true; // default true
}

function startup(&$controller) {
if ($controller->isAmf) {

Configure::write(’debug’, 0);

$controller->autoRender = false;
$server = new SabreAMF_CallbackServer();
$server->onInvokeService = ‘amfCallBack’;
$server->exec();

exit; //ここでexitしてるので、amf の 場合はほかのactionは呼べないはず。。。
}
}

function beforeRender(&$controller) {

if ($controller->isAmf) {
exit; // 念のため
}
}
}
?>

以下、簡単な、文字列と、配列のやり取りのサンプル用Controllerです。

action == “normal”) {

$this->isAmf = false;
Configure::write(’debug’, 2);
$this->autoRender = true;
}
}

// indexアクションは通常出力に使わないほうがいい
// beforeFilterで除外すると、初期アクセスがamfから指定ない場合、
// リモートで呼び出されたときにエラーでちゃう

function index() {
return “index”;
}

//これは通常表示できるアクション
function normal() {
$this->set(”hoge”, date(”Y-m-d H:i:s”));
}

//文字列返却
function getstr() {
$testname = $this->amfData[0]; // flashから送られてきた値はamfDataにある。しかし、キーが消えてるよ。。。

return date(”Y-m-d H:i:s”) . ” こんにちは ” . $testname; //各action で return した値が flashに返る。
}

//配列返却
function getarr() {

$res_list = array();
for($i = 0; $i < 10; $i++) { $res = array( “col1″ => $i,
“col2″ => rand(1, 1000),
);

$res_list[] = $res;
}

$this->log(print_R($res_list, true), LOG_ERROR);
return $res_list;
}
}
?>

このコントローラにFlashからリクエストのサンプルです。






hoge
















【参考リソース】

http://code.google.com/p/sabreamf/

http://blog.non-style.com/2008/11/cakephp-airsabreamfcakephp.html

http://blog.asial.co.jp/347

2 thoughts on “SabreAMF: FlexをPHP5と連携させるフレームワーク”

Leave a Reply

Your email address will not be published. Required fields are marked *