Flex +PHP ( AMFPHP)+ RemoteObject

本文介绍如何使用RemoteObject组件实现Flex应用与AMFPHP服务器之间的通信。文章详细记录了AMFPHP的安装配置过程及解决权限问题的方法,并提供了一个简单的示例,展示了如何在Flex项目中调用PHP类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用RemoteObject 实现Flex与AMFPHP通信

 

AMFPHP 下载地址 (http://amfphp.org/) :

http://sourceforge.net/projects/amfphp/files/amfphp/amfphp%201.9%20beta2/amfphp-1.9.beta.20080120.zip/download

 

解压到web容器目录 (C:\Inetpub\wwwroot)。我在这一步遇到的问题是,直接把amfphp文件夹从压缩包里拖过去后,访问localhost/amfphp/gateway.php 以及 localhost/amfphp/browser ,需要输入本机用户名和密码,并且工作不正常。可能是权限问题。

于是在wwwroot中手动新建一个文件夹,复制amfphp中内容进去,然后删除之前的amfphp,并把新建文件夹改名为amfphp。解决了。

 

 

测试: 访问localhost/amfphp/gateway.php 以及 localhost/amfphp/browser

browser这个Flex Application会自动检测C:\Inetpub\wwwroot\amfphp\services 中的php类和方法。

 

此AMFPHP版本由于PHP版本更新的缘故,需要修改一个文件,替换掉最新PHP不提倡的一个方法。参见:

http://xltank.iteye.com/admin/blogs/583991

 

更改后,测试通过。

 

在C:\Inetpub\wwwroot\amfphp\services 中添加PHP类和方法后,可以再browser中的列表里看到。

例如:

test.php

<?php
class test
{
    function say($sMessage)
    {
        return 'You said: ' . $sMessage;
    }
}
?>

 和test1.php

<?
class test1{
	function test($str){
		return $str." end";
	}

}
 

 

 

 

*****

配置好AMFPHP后,在

 

 

先在C:\Inetpub\wwwroot下新建文件夹(testflex),然后在Flex中新建Flex项目(testflex):

 

在第一个面板中, Application server type : PHP

 

第二个面板中,

Web Root : C:\Inetpub\wwwroot\testflex

Root URL :http://localhost/testflex

Output folder : C:\Inetpub\wwwroot\testflex

 

第三个面板中,

Output folder URL : http://localhost/testflex

 

完成。

 

mxml代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()">
    <mx:Script>
        <![CDATA[
    	import mx.controls.Alert;
    	import mx.managers.CursorManager;
    	import mx.rpc.events.ResultEvent;
    	
        private function initApp():void {
			service.say("123333");
			service2.test("111111111");
			
        }
       
        private function resultHandler(evt:ResultEvent):void {
        	CursorManager.removeBusyCursor();
			Alert.show(evt.result.toString());
        }
        
        private function resultHandler2(evt:ResultEvent):void {
        	CursorManager.removeBusyCursor();
			Alert.show(evt.result.toString());
        }
           
        ]]>
    </mx:Script>
   
    <mx:RemoteObject id="service" showBusyCursor="true" source="test" destination="amfphp">
        <mx:method name="say" result="resultHandler(event)" />
    </mx:RemoteObject>
    <mx:RemoteObject id="service2" showBusyCursor="true" source="test1" destination="amfphp">
        <mx:method name="test" result="resultHandler2(event)" />
    </mx:RemoteObject>
    <mx:Panel styleName="myPanel" layout="absolute" title="名册" width="200" height="400">
        <mx:List id="myList" width="100%" height="100%"></mx:List>
    </mx:Panel>
</mx:Application>
 

复制C:\Inetpub\wwwroot\amfphp\browser 中的services-config.xml 到Flex项目src中,并修改< endpoint uri =" http://flashservices/gateway.php " 为 < endpoint uri =" http://localhost/amfphp/gateway.php

在testflex项目的编译参数中添加 -services=services-config.xml。

 

到这里可以debug了。没问题的话,会弹出两个Alert窗口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值