flashから直接DBに接続することはできない。
そこで、zend_amfで簡単に接続できる。
1.phpのZend_Amf_Serverクラスを利用する。
2.phpでDB操作するクラスとそのメソッド作成
3.flashからDB操作するクラスのメソッドを実行する。
■php:アクション
$server =& new Zend_Amf_Server();
$server->setClass(‘クラス名’);
$response =& $server->handle();
$this->_helper->layout->setLayout(‘データ吐き出しようのカラページ’);
$this->_helper->viewRenderer->setNoRender();
echo $response;
■php:クラス
class クラス名{
private $db;
public function __construct() {
$config = new Zend_Config_Ini(‘~.ini’, ‘~);
$this->db = Zend_Db::factory($config->db);
$this->db->getConnection();
}
public function getUseInfo($user_name) {
return $this->db->fetchAll(“SELECT * FROM ~ );
}
}
■flash
var gateway:String = “http://~.com/sr/コントローラー/アクション/”;要はURL
var connection:NetConnection;
var responder:Responder;
function getLevel(){
responder = new Responder(onResultHandler, onStatusHandler);
connection = new NetConnection();
connection.connect(gateway);
connection.call(“getLevel”,responder, “関数に渡す値があれば”);
}
function onResultHandler(result:Object):void {
trace(result);
}
function onStatusHandler(fault:Object):void {
trace(String(fault.description));
}
課題
1.phpのセッションがZend_Amf_Serverと共通化できない。
2.zend_authがZend_Amf_Serverと共通化できない。
3.cookieがとれない。
requestやresponseに値を追加できるメソッドがあるが、使い方がわからない。
追加
zendframework1.8からZend_Amf_Server内でzend_session、zend_auth、zend_aclなどが使えるようになった。