2009年3月3日 星期二

FLEX中使用AMFPHP 1.9的相關設定

  AMFPHP在Linux系統中基本上是不用安裝的,下載後直接解壓就可以了。一般來說可以把它放在web的根目錄下,這可以一份AMFPHP給多個APP使用,但對於APP的移植帶來了不便的地方,每次都一定要記得把對應的service文件copy下來,APP移植後還得重新設定一次AMFPHP,並且把service文件copy回去。這對APP的發佈是不可行的,所以最好是把AMFPHP放到APP專案文件夾內,這樣就可以把AMFPHP連同專案一同發佈了。下面來說一下AMFPHP的相關設定:
假設我們的專案文件夾為APP1,放在 web的根目錄下,把AMFPHP放到APP1中,其目錄結構為"WEBROOT\APP1\AMFPHP",首先要在設定"WEBROOT\APP1\AMFPHP\gateway.php":

//gateway.php文件設定
efine("PRODUCTION_SERVER", false);
include "globals.php";
include "core/amf/app/Gateway.php";
$gateway = new Gateway();
$gateway->setClassPath("services/"); //自己編寫的數據服務文件就是放在這裡
$gateway->setClassMappingsPath($voPath);   //上面的基本不用改了
//主要是下面這一句,如果數據庫是用UTF8的就按這個寫法,注意你的PHP要支持iconv
$gateway->setCharsetHandler("iconv", "UTF-8", "UTF-8");
//否則自己根據需要改 $gateway->setCharsetHandler("iconv", "數據庫文字編碼", "輸出文字編碼");

接着是FLEX端的設定:

  1. 在flex專案中加入一名為services-config.xml的文件,注意不能是services_config.xml,內容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <services-config>
    <services>
    <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
    <destination id="amfphp">
    <channels><channel ref="my-amfphp"/></channels>
    <properties><source>*</source></properties>
    </destination></service></services>
    <channels>
    <channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
    <endpoint uri="http://YOUR_SERVER/APP1/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
    </channel-definition></channels>
    </services-config>
    注意粗體部份的內容因自己的情況按需更改
    另外,endpoint的URL可以使用相對地址,但不是相對本文件的地址,而是相對於WebRoot的地址,例如:"/APP1/amfphp/gateway.php",這一點搞暈了很多人。

  2. 設定Flex Builder的Compiler Arguments
    在Flex Builder Navigator Panel(即列出目前開發中專案的Panel),在flexTree旁Right Click選Properties,選Flex Compiler,在Additional compiler arguments加-services services-config.xml,因為兩個XML files是在index.mxml放在同一個Folder,所以不用加路徑。

    -locale en_US -services services-config.xml

    如果在services-config.xml用了{context.root},則要再加-context-root flexTree,否則不用了。

  3. 編寫PHP數據服務文件放到"WEBROOT\APP1\AMFPHP\services"文件夾中

沒有留言:

張貼留言