CakeSWXPHP 支援 1.2 版了

edited 十月 2013 in CakePHP
作者網址: http://blog.aboutme.be/cakeswxphp
相關介紹:
http://bakery.cakephp.org/articles/view/cakeswxphp
http://blog.aboutme.be/2007/12/18/cakeswxphp-simpler-and-on-cake-12

雖然很多人都知道 AMFPHP 之類的物件可以讓 PHP 與 Flex/Flash 程式互動,但是 AMFPHP 的使用者大多以土法煉鋼的方式撰寫所需要的 service ,透過 cakeswxphp 的好處是可以直接呼叫 CakePHP 的controller 來傳回資料,開發應該會更有效率些 :)

還沒真的用過,只有把它塞進 plugin 資料夾中,透過 SWX explorer 大概看了一下。

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3089

評論

  • edited 一月 2008
    應該是確定可以用了,只是呼叫既有的 Controller->method 可能會遇到一些狀況,也許可以針對 Flex 要使用的資料獨立寫出相對單純的 Controller

    測試環境:
    Flex Builder Linux alpha 2
    CakePHP 1.2.0.6311
    cakeswxphp_cake_12_r94.zip

    *我使用的是 AMFPHP 的手法

    1. 解壓縮 cakeswxphp_cake_12_r94.zip 後,把 app/webroot/amf.php 、app/controllers/amfphp/discovery_service.php 與 vendors 中的內容放到自己的專案路徑下
    2. 在 discovery_service.php 新增一個方法:
    function test() {
    	    return 'test';
    	}
    
    3. 開啟一個 Flex 專案,假設為 test ,在 test/src 下面新增一個資料夾 dao
    4. test.mxml 內容如下:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute" creationComplete="daoTest.getVal();">
    <mx:Script>
    	<![CDATA[
    	    import dao.TestProvider;
            private var daoTest:TestProvider = new TestProvider();
    
    	]]>
    </mx:Script>
    </mx:Application>
    
    5. 在 test/src/dao 下新增一個 ActionScript File ,名稱為 TestProvider.as ,內容如下:
    package dao{
        import flash.net.NetConnection;
        import flash.net.Responder;
        
        import mx.controls.Alert;
    
        public class TestProvider {
            private var nc:NetConnection;
    
            public function TestProvider() {
                nc=new NetConnection  ;
                nc.connect('http://xxx/amf.php');
            }
    
            private function _Fault(e:*):void {
                Alert.show("伺服器連線錯誤","系統訊息",Alert.OK);
            }
            
            public function getVal():void
            {
                function _Result(result:*):void{
                    Alert.show(result,"系統訊息",Alert.OK);
                }
                nc.call("amfphp.DiscoveryService.test",new Responder(_Result,_Fault));
            }
            
        }
    }
    
    *http://xxx/amf.php 請改為自己安裝的 CakePHP 網址

    編譯、執行後應該就會看到一個警告視窗,內容為 test ;以此為基礎,我可以將 CakePHP 中的資料傳遞給 Flex 程式使用,只是 Flex 取得的陣列資料會經過 AMFPHP 轉換為物件,留給有心的朋友自己嘗試囉 :)
  • edited 一月 2008
    測試時發現效能的差異蠻大的,透過 amfphp 呼叫只要 250ms 的方法,改透過這種方式處理時,時間超過了 4000ms ,這樣的延遲造成了不少問題,也許需要考慮其他方案。

    其他推薦的方案:

    CakeAMFPHP
    - http://cakeforge.org/projects/cakeamfphp/
    主要開發者似乎已經不願意繼續維護這個版本,只要稍做修正就可以在 CakePHP 1.2 上面運作。

    CakeAMF plugin
    - https://trac.cakefoundation.org/amf/
    跟上面是同樣的開發者,只是這個版本需要為 PHP 安裝額外的外掛( http://www.teslacore.it/wiki/index.php?title=AMFEXT ),目前我自己在最新版本測試有些問題。
  • edited 一月 2008
    作者為此自行設計了一個效能測試:
    http://blog.aboutme.be/2008/01/20/benchmarking-cakeswxamfphp/

    後來發現,只要把 PECL/APC 移除後,速度就不會有那麼大的差異,恩,別拿主機亂搞會比較好 :)
  • edited 四月 2009
    現在又多了一個 CpAmf plugin:
    http://carrotplant.com/en/blog/flex-remoting-with-cakephp-cpamf-plugin

    參考了 cakeAMFPHP 的方式,將 AMFPHP 更新到最新版本,至少看來 service browser 是可以用的 ;)
  • edited 四月 2009
    CakeAMFPHP 作者推薦用cakeamf或者cakeswxphp,如樓主所說,cakeswxphp有性能問題,我還是先用下cakeamf試試吧。
Sign In or Register to comment.