[转]ZendAMF使用
阳光辉
2023-12-01
今天尝试了一下zendamf,过程中遇到了一点错误,在此记录下来:
安装:zend framework里面好像包含zendamf的所以如果使用的是zend framework就可以不用下载了(ZendServer\share\ZendFramework\library\Zend\Amf)。
如果是另外下载的将解压文件里面的library文件夹拷贝到服务器上,然后设置php.ini里面的配置路径也可以使用ini_set函数。我使用的是 zend studio 7, 直接在项目->属性里面在PHP Include Path添加的。安装ok后就可以使用了:
新建amf.php和HelloAmf.php文件
HelloAmf.php的内容:
<?php
class HelloAmf
{
function say($msg)
{
return "Zendamf: $msg";
}
}
?>
amf.php的内容:
<?php
include 'Zend/Amf/Server.php';
include 'HelloAmf.php';
$server = new Zend_Amf_Server();
$server -> setClass('HelloAmf');
echo $server -> handle();
?>
打开amf.php文件的时候让下载该页面。问题出在最后一句的echo,此时去掉echo 结果显示:Zend Amf Endpoint.
好了php端的工作完成了。下面是flash端的:
我使用的flash cs3,在里面新建amf.fla文件和ZendAmfConn.as文件,然后关联文档类。
ZendAmfConn.as里面的内容为:
package
{
import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.Responder;
public class ZendAmfConn extends Sprite
{
private var gateWay:String = 'http://localhost/ria/amf.php';
private var conn:NetConnection = new NetConnection();
private var rsp:Responder = new Responder(ok, onfallt);
public function ZendAmfConn()
{
conn.connect(gateWay);
conn.call("HelloAmf.say", rsp, 'PHP/Flash');
}
private function onfallt(fault:Object):void
{
trace ("Error: " + String(fault));
}
private function ok(res:Object):void
{
trace(String(res));
}
}
}
然后ctrl+enter测试,没有任何反应。现在我们回到amf.php里在最后一句加上原来的echo,再测试一下就好了,测试结果:Zendamf: PHP/Flash