这是一篇讲解Flash与Amfphp Flash Remoting通信的入门级实例教程。通过本例的学习,我们将了解使用Amfphp开发Flash Web的基本流程。本教程以Amfphp1.9 beta 2为例讲解。
Amfphp通过PHP类文件可以实现Flash与远程服务的数据交换。在本例中,我们将使用一个简单的PHP类来实现HelloWorld远程服务。
如果对Flash Remoting不太了解,请参看前面的入门教程。本文假定我们已经配置好了Amfphp环境。将下面的代码保存为HelloWorld.php,并放置在Amfphp根目录\services\tutorials\remoting下。
<?php class HelloWorld { /** * @desc 向用户表示友好问候 * @access remote * @returns String */ function sayHello($userName) { return "您好,$userName 。这是来自Amfphp Flash Remoting的问候"; } } ?>
这就是一个很普通的PHP类编写,PHP类的语法与编写ActionScript 2.0类的语法相似。唯一特殊的地方就是它使用了javadoc 注释。为什么要这样 注释呢?这是为了将注释显示在服务浏览器中,方便团队开发。
返回到Flash,注释掉其它版本的网关路径所用的代码。测试影片,你将收到来自AmfphpFlash Remoting的问候。
当然,你仍可以使用Amfphp1.9 以前的语法。代码如下:
<?php class HelloWorld { function HelloWorld () { $this->methodTable = array( "sayHello" => array( "description"=> "向用户问候", "access"=> "remote", "arguments" => array("userName") ) ); } function sayHello ($userName) { return "您好,$userName 。这是来自Amfphp Flash Remoting的问候"; } } ?>
在PHP类的构造函数使用methodTable对象,methodTable是PHP类方法的集合数组,每一个方法都是一个元素,,每一个元素又是一个关系数组。其 中属性description描述该方法的功能,属性access说明该方法的访问权限,有public, private和remote三种,如果提供远程服务的,access的值只能为remote。这几个属性当中,只有access是必有的。如果使用Amfphp1.2及其更高版本,MethodTable已经作为一个类来处理了,我们可以直接导入它,然后使用其create方法来创建构造函数。
新版Amfphp附带的服务浏览器功能不如以前,有时间跟大家讲解。