首頁 > FLEX, PHP > FLEX on PHP , use AMFPHP remoting

FLEX on PHP , use AMFPHP remoting

2009年2月20日  瀏覽次數 : 13,901

在介紹過我們的 FLEX on ColdFusion 後,雖然可以正常進行後端的資料處理,但是老師總是告誡我們學程式語言不要押寶,在 CF 的資源在台灣仍然取得困難的情況下,還是先轉戰 PHP 陣營吧 ! 今天就來介紹一下 FLEX 如何透過 AMFPHP Remoting 與後端的 PHP 做整合。

未命名--2(1) 感謝 ♣梅問題‧教學網【Minwt】♣ 贈圖一張

這篇將會是長篇大論,請各位做好起飛的準備,抓穩方向盤,拉緊手煞車。

公寓善其生,必先利其器,先來準備好我們所需要的軟體吧

Adobe FlexBuilder 3 image FLEX IDE 工具
Eclipse PHP Tools image PHP IDE 工具
amFphp image Remoting gateway
XAMPP for Windows image Apache server
PHP 編譯套件
MySQL 資料庫

 

請各位先確認好以上的東西都準備好了,當然如果你是進階 USER 也可以使用其他工具代替,只是以上我所使用的,未來範例也會都用以上軟體來執行。安裝的部分我會省略 FLEX BUILDER 的安裝,基本上這是最基礎了。

SETP 1 : 安裝 XAMPP for Windows

XAMPP 是一套免安裝的 Apache 網頁伺服器,他已經包含可以執行 PHP 能力,並且包含 MySQL 與 MAIL SERVER 與 FTP SERVER,雖然我們範例用不到,但是因為他免安裝的份上,還是很好用的,首先先將下載回來的檔案解壓縮,並且執行 setup_xampp.bat ,當完成後執行 xampp-control.exe 便可以開出 XAMPP 控制台,這時候我們只要啟動 Apache Server 即可。

image

預設的網頁位置在 \xampp\htdocs\ 底下,這時你可以放上一個你自己的 PHP 檔案測試是否成功,不過相信我,趕快進行下一步設定吧 !

STEP 2 : 安裝 AMFPHP 並檢視結果

第二階段就是把我們下載好的 AMFPHP 的壓縮檔解壓縮裡面會有一個 AMFPHP 的資料夾,我們將這個 AMFPHP 資料夾放入網頁的執行目錄 \xampp\htdocs\ 底下,接下來我們利用瀏覽器打開 http://127.0.0.1/amfphp/browser/ 我們會看到一個也是由 FLEX 寫好的檢查程式,這個介面可以幫助我們查看我們的方法是不是有錯,第一次開啟時我們要設定 gateway 的位置。

image

如果你跟我一樣是本機開啟,那只要安心的按下 SAVE 就可以囉,接下來執行看看預設的測試方法,依照順序點擊,如果正確出現方法就算安裝完成 AMFPHP 了。

image

但是我想你這麼聰明,應該不會有太大的問題,繼續進行下一步吧。

STEP 3 : 安裝 PHP IDE 工具 PDT

選用這套的理由是因為他是基礎於 Eclipse ,他跟 FLEX BUILDER 是同一個老爸,所以啦,在開發起來會比較有順心的感覺,一樣免安裝,在解壓縮完後執行,執行後程式會要你設定一個 workspace 任意設定即可,進入程式後你會看到以下的畫面。

image

接下來我們要建立 AMFPHP 所使用的 PHP CLASS 因此我們在專案中建立一個 Folder 連結到 AMFPHP 的 Services 資料夾中

imageimage 

當你建立好了資料夾,我們變可以新增第一隻 PHP CLASS 的程式讓 Remoting 來使用,當然不免俗的,第一隻程式永遠都是 HelloWorld 囉

image

HelloWorld.php

1
2
3
4
5
6
7
<?php
class HelloWorld{
	function sayHello(){
		return "Hello Flex3 from PHP !";
	}
}
?>

當建立好類別檔後,我們可以回到 AMFPHP 的檢視界面看看是否這隻類別可以被正常執行。http://127.0.0.1/amfphp/browser/

image

建立完成後可以正確顯示 HelloWorld !! 回傳字串囉,我們開始進行 FLEX 端的設定與撰寫囉。

STEP 4 : 設定 FLEX 專案進行 Remoting 連接

已經可以在 AMFPHP 檢視到自己寫的 PHP CLASS 代表已經完成一半了,但是不要開心的太早,FLEX BUILDER 這邊還是要設定一下呢。首先我們先開啟 FLEX 專案,伺服器語言的部分我們設定 PHP ,並且設定 webroot 位置。如下圖。

image image

設定好之後我們就可以開始第二步設定 services-config.xml 一開始很納悶,這個東西到底要從哪邊來,網路上的分享也沒說要怎麼寫,只說在根目錄建立一個 service-config.xml 檔案,後來才找到這隻檔案它放在 AMFPHP 的 \browser 資料夾底下就會看到了,我們把它 COPY 到 FLEX 專案中並且打開來修改一下。

image

接下來我們要在專案的設定內容上做編譯設定,在專案內容的 compiler 部分加上以下參數 -services services-config.xml 便完成 FLEX 端設定。

image image

接下來我們終於可以開始寫 FLEX 程式了,我們來做個簡單的範例,按下按鈕取得 SERVER 端的 HelloWorld 類別的 sayHello 方法,並且將回傳資料放入 TEXTAREA 區塊中,很簡單的 FLEX 程式碼,我們來試試看吧。

amfphpTest.mxml

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
	 fontSize="18">
	<mx:TextArea width="400" height="100" text="{this.amfphpRemoting.sayHello.lastResult}"/>
	<mx:Button label="取得 AMFPHP 端資料" click="this.amfphpRemoting.sayHello()"/>
	<mx:RemoteObject id="amfphpRemoting" destination="amfphp" source="flex3.HelloWorld"/>
</mx:Application>

寫好了,最後只要將它執行就可以啦 ! 我們來看看結果吧 !

 

image

Random Posts

Loading…

:: 把這篇好文推到書籤網站與更多人分享吧 ::
  • funp
  • Hemidemi
  • YahooKimo
  • Google
  • udn
  • Haohao
  • Live

相關文章 :

Ausir FLEX, PHP , , , , ,

  1. 小Z
    2010年7月25日12:47 | #1

    你好~
    我最近在嘗試flex-php-db,把amfphp放到www下還有測試helloworld.php檔放入amfphp/services下後,在本機瀏覽http://127.0.0.1/amfphp/browser/想測試此helloworld卻會得到以下的訊息:
    Error retrieving service info:
    Invalid AMF message
    Fatal error: Uncaught exception ‘VerboseException’ with message ‘Cannot modify header information - headers already sent by (output started at C:\AppServ\www\amfphp\services\helloworld.php:1)’ in C:\AppServ\www\amfphp\core\amf\app\Gateway.php:191
    Stack trace:
    #0 [internal function]: amfErrorHandler(2, ‘Cannot modify h…’, ‘C:\AppServ\www\…’, 191, Array)
    #1 C:\AppServ\www\amfphp\core\amf\app\Gateway.php(191): header(’Content-type: a…’)
    #2 C:\AppServ\www\amfphp\gateway.php(154): Gateway->service()
    #3 {main}
    thrown in C:\AppServ\www\amfphp\core\amf\app\Gateway.php on line 191

    經過搜尋其他人的狀況將此hello.php編碼改為ANSI(原為UTF-8)後,上述錯誤訊息消失,卻出現
    Service does not contain any methods
    與Ausir大的教學不同~”~,沒有出現可供測試的function! 請問這有可能是什麼問題呢?我用的是Appserv(Xampp也安裝測試過了,問題相同),Win7!這問題造成很大的困擾><,麻煩指點一下,謝謝!!!!

  2. 小Q
    2010年11月6日17:13 | #2

    回應好像無法出現,是我問題太多嘛,呵

  3. 小Q
    2010年11月6日17:40 | #3

    我遇到跟miss #16的錯誤一樣,然後看了Forgot的回應說,直接灌appserver就可以,請問是換appserver套件?不用XAMPP的意思嗎,還是指另外灌apache,剛學FLEX,按照Ausir兄的教學到step 2就卡住了,出現錯誤,路徑有檢查過,不過我是重灌XP後安裝flash_builder 4,amfphp 1.9,xampp-win32-1.7.3,和eclipse,程式版本跟教學上不同,不知道這有沒有關係?雖然step 2有錯誤,不過我還是繼續下去到step 4,一樣的操作,卻顯示不出來教學圖片image-thumb100.png的結果,慘,抱歉初學問題多,麻煩指教。

  4. 小Q
    2010年11月6日19:33 | #4

    我上google查許多網站,都指向php5.3版本跟amfphp不相容呢,不知道有沒有辦法把XAMPP內的PHP版本降低或用PHP 6的,

  5. 小Q
    2010年11月6日20:02 | #5

    有解決了,降低XAMPP的版本即可,amfphp 還是用1.9的版本。

  6. 2010年11月12日16:46 | #6

    @小Z

    @小Q

    不好意思這麼晚才回你的信件

    的確是在 PHP 5.3 會造成一點問題
    可能需要注意一下

  7. 2010年11月29日18:59 | #7

    你好,我跟着你的步骤来配置的,前面几步测试都是正确的,browser里也OK,但就是在flex前端写好后,在网页上点按钮,文本框中并没有消息出现,这是为什么呢

  8. 2010年12月2日00:56 | #8

    @代

    如果你在 browser 測試是 ok 的
    你可能要檢查你的 services-config.xml 檔案是否正確

    並且安裝 flash debug 版本來看看是否有錯誤提示

評論分頁
  1. 2011年6月1日08:27 | #1