PHP + Actionscript AMF(通过SabreAMF) -如何返回一个PHP数组和映射到数组/对象在Act


PHP + Actionscript AMF (via SabreAMF) - How to return a PHP array and map to array / object in actionscript

快速提示:我的actionscript技能是weak sauce…我不是猴子,所以给我适当的建议,我能解决问题。

因此,我们使用SabreAMF来处理一些对后端的AMF调用。

一切顺利。

回调服务器和actionscript端都按预期工作。

我们想解决的一个问题是:

现在,当我们需要返回一个数据集(数组)时,我们只需通过这样的方式(在php端)将它们连接起来:

return 'VALUE1|VALUE2|VALUE3';

然后在actionscript端我们这样做:

var parts:Array=result.split('|');
/* parts[0] = VALUE1 , parts[1] = VALUE2 , parts[2] = VALUE3 */

上面的方法很好,但是我忍不住想一定有一种更干净的方法来做事情。

我们想做以下事情:

PHP End (SabreAMF):

 return array('Param1'=>'Value1','Param2'=>'Value2','Param3'=>'Value3');

并在actionscript端自动将这些数据映射到一个数组或对象。这将是合乎逻辑的,一个可以返回数组,并有它们映射正确(和自动,祈求好运)在actionscript端。

所以,问题如下:

当使用SabreAMF处理actionscript AMF调用到基于PHP的后端,是否有可能返回一个数组,并有actionscripts AMF处理程序自动映射数据集和数组(理想情况下)或对象不使用连接?

拼接看起来有点像黑客。

谢谢!

通过JSON使用json_encode()将其作为字符串发送,然后在AS3中使用任何JSON库将其转换为适当的数据结构。我认为这是最简单的方法……或者我错了,有人会给我们更好的答案。

编辑:你也可以发送它作为XML字符串,虽然我的AS3同事总是坚持使用JSON作为一个更容易的选择。

您可以使用AMF做您想做的事情。Flash将透明地解释接收到的数据。不过,您可能需要检查一下AmfPHP,因为Sabre AMF没有得到维护。(免责声明:我运行AmfPHP)。

JSON和XML也可以工作。建立AMF可能需要更多的工作,这取决于你所知道的。它的主要优点是节省带宽和强类型,所以找出最适合您的。

http://www.silexlabs.org/amfphp/

PHP AMF3扩展可以更快地合并到您的项目中。

看看这个- https://github.com/neoxic/php-amf3

// Have your data
$data = array('Param1'=>'Value1','Param2'=>'Value2','Param3'=>'Value3');
// Encode into AMF3
$str = amf3_encode($data);
// Print to stdout (or use your way to pass it to the client)
print $str;