从FLEX转换为PHP

时间:2012-01-31 17:49:26

标签: php flex amfphp

AS3代码

<fx:Declarations>
    <!-- this is the RemoteObject  used to make the RPC calls -->
    <mx:RemoteObject id="myRemote" destination="MyService" source="MyService"
       endpoint="http://localhost/amfphp/gateway.php"                
            showBusyCursor="true"/>

</fx:Declarations>

protected function button1_clickHandler(event:MouseEvent):void
{
    var aut:VOAuthor;  // value object class
    aut = new VOAuthor();
    aut.id_aut = 3;
    aut.fname_aut = "test";
    aut.lname_aut = "123";
    myRemote.saveData(aut);
}

接收PHP代码

public function saveData($author) 
{
   $mysql = mysql_connect("localhost", "mx112", "xxxxxx");          
   mysql_select_db("flex360");      
   $query = "INSERT INTO authors (fname_aut, lname_aut) VALUES ('".$author->fname_aut."', '".$author->lname_aut."')";          
   $result = mysql_query($query);                 
   return $author;
}


<?php
class VOAuthor {   
 public $id_aut;    
 public $fname_aut;    
 public $lname_aut;        
 var $_explicitType="org.corlan.VOAuthor";}
?>

Flex网络监视器响应:原始视图

{lname_aut=123, _explicitType=org.corlan.VOAuthor, fname_aut=test, id_aut=3}

但如果我在php代码的末尾执行此操作

 return $author->lname_aut;

网络监视器响应为NULL

所以问题是我可以打印数组但是如何将数组转换为已知的php类型? 5天后我终于找到了使用amfphp的flex和mysql,请帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是amfphp和Flash,则必须注册您的VO:

import org.corlan.VOAuthor;
// ...
registerClassAlias("org.corlan.VOAuthor", VOAuthor);

只有这样才能识别出你从ActionScript发送它的对象。

答案 1 :(得分:0)

是的,您需要注册您的课程,另一种方法是在Flex VO声明中使用元数据标签。

package VO
{
    [RemoteClass(alias="org.corlan.VOAuthor")]
    public class VOAuthor
    {
        private var id_aut   : int;
        public var fname_aut : String;
        public var lname_aut : String;
...

希望有所帮助,

罗杰。

PS。可以在此处找到更详细的解释(帮助我):http://www.brentknigge.com/?q=node/499