使用Amfphp实现Flash与服务器通信

这是一篇讲解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附带的服务浏览器功能不如以前,有时间跟大家讲解。

发表评论