使用AMFPHP能够极大简化服务端的逻辑。现在我打算简化它的用法。没有应答器,没有侦听器或客户端。 只有一个call(…)和一个回调函数:
- private function init():void
- {
- new Gateway(“http://localhost/amfphp/gateway.php”);
- }
- private function listButton_clickHandler(event:MouseEvent):void
- {
- listButton.enabled = false;
- call(“Persons.listPersons”, 10, listPersonsCallback);
- }
- private function listPersonsCallback(object:Object, errorText:String):void
- {
- listButton.enabled = true;
- listButton.errorString = errorText;
- if (errorText)
- return;
- // handle persons from object
- }
复制代码
这儿是Persons.php 服务:
- < ?php
- <?php
- class Persons
- {
- var $link;
- public function __construct()
- {
- $link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
- if (!$link)
- throw new Exception(“DB connection error” . (PRODUCTION_SERVER|> ? “” : “: ” . mysql_error()));
- if (!mysql_select_db(DB_NAME))
- throw new Exception(“DB selection error” . (PRODUCTION_SERVER|> ? “” : “: ” . mysql_error()));
- }
- function listPersons($limit)
- {
- $query = sprintf(“SELECT * FROM persons LIMIT %d”,
- mysql_real_escape_string($limit));
- $this->_handleResultError($result = mysql_query($query)));
- return $result;
- }
- }
复制代码
下载Gateway.as 和call.as(请到原帖下载。)
根据应用的逻辑不同,回调函数可以有下列的几种:
function():void,
function(errorText:String):void,
function(object:Object, errorText:String):void.