кастинг из FLEX в PHP - PullRequest
       49

кастинг из FLEX в PHP

0 голосов
/ 31 января 2012

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

так что проблема в том, что я могу напечатать массив, но как привести массив tht к известному типу php? Через 5 дней я в конце концов разобрался с flex и mysql, используя amfphp, кто-нибудь, пожалуйста, помогите?

Ответы [ 2 ]

0 голосов
/ 27 января 2013

Да, вам нужно зарегистрировать свой класс, и альтернативой является использование тега метаданных в объявлении 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

0 голосов
/ 31 января 2012

Если вы используете amfphp и Flash, вы должны зарегистрировать свои VO:

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

только тогда php распознает объекты, которые вы отправляете из ActionScript.

...