下载Amfphp,截至到2015.5.16,最新版为2.2.1

得到一个压缩包,根据官方说明,只需要把amfphp-2.2.1/Amfphp目录部署到服务器端即可使用,如果需要,还可以部署amfphp-2.2.1/BackOffice目录,使用Amfphp的ServiceBrowse等功能,详细情形见官方文档不再赘述了。

这里我将在本地Wamp服务器上 Wamp/www/目录下部署Amfphp,把压缩包解压,得到amfphp-2.2.1目录,包括Amfphp、BackOffice以及文档和实例。

这样就得到了Wamp/www/amfphp-2.2.1/Amfphp、Wamp/www/amfphp-2.2.1/BackOffice、

Wamp/www/amfphp-2.2.1/doc等目录了。

新建一个Flex项目,项目选项中,Flex服务器技术选择PHP,填好服务器位置和输出文件夹位置

创建一个名为services-config.xml的XML文件,放在Flex项目源码src文件夹下,XML内容如下

*

需要注意的是 endpoint uri="xxxxxx"这里要填写你的Amfphp网关php文件所在位置,我这里命名为gateway.php放在项目根目录ordersystem/下

项目属性-Flex编译器-附加的编译器参数中,添加 -services services-config.xml 参数

然后说明gateway.php的内容,根据官方说明,Amfphp默认在它自己部署目录的Services子目录下查×××,为了把Flex与PHP通信交互的php文件放置在Flex项目的发布目录下,而不是混在Amfphp的部署目录中,我们需要自定义Amfphp的配置。在Flex项目的发布目录Wamp/www/ordersystem/下,创建一个gateway.php文件,其实名称是随意取的,只需注意,Flex项目中services-config.xml中,endpoint 的uri属性要对应此文件的目录位置和文件名。

serviceFolders=array(dirname(__FILE__).'/services/');$gateway=Amfphp_Core_HttpRequestGatewayFactory::createGateway($config);$gateway->service();$gateway->output();?>

gateway.php中,利用require_once和dirname找到并引用Amfphp中的ClassLoader.php,创建Amfphp_Core_Config类的实例,设置自定义的查找Amfphp服务类的位置,这里设置为Flex项目发布位置目录下的services子目录。然后调用

Amfphp_Core_HttpRequestGatewayFactory::createGateway($config),创建gateway,然后调用service和output方法。

这样,Amfphp的基本配置就完成了,Flex项目发布目录的services子目录中Wamp/www/ordersystem/services/,创建自定义的php服务类,暴露公共方法,就可以供Flex远程调用了。

Flex 4.6中,可以使用Netconnect类或是RemoteObject类来调用服务器端php方法。

这里说明RemoteObject的用法。

在Flex 4.6的Application mxml中的 fx:Declarations中,定义RemoteObject,注意destination设为amfphp,source设置为Wamp/www/services/中 服务php文件中的自定义类名。

s:method 属性定义该类公布的服务方法的名称,result事件处理函数设置为调用成功后处理数据的函数,fault时调用失败后的事件处理器

然后就可以通过 RemoteObject实例.方法(参数)调用服务器端公布的服务方法了

如,这里可以调用versionRO.getVersion();