piątek, 4 września 2009

Mapowanie klas w amfphp i AS3

Ponieważ niektórym się zapomina - mi w sumie też - dodawać magiczną linijkę w klasach VO postanowiłem napisać tego posta. Potraktujcie to jako how-to. Pomijam wszelkie zbędne linijki kodu jak includy, importy, pakiety, itp :)

Zacznijmy od kodu w PHP:
  • klasa obiektu VO
class UserVO
{
public $_explicitType = 'vo.UserVO' ;

public $login ;
public $pass ;
}
  • klasa serwisu amfphp
class User
{

public function getUserData()
{
$user = new UserVO() ;
$user->login = 'myLogin' ;
$user->pass = 'myPass' ;
return $user ;
}
}
Z tego co widać jest to bardzo prosty kod. Metoda getUserData zwraca na sztywno obiekt klasy UserVO. Uwagę należy zwrócić na właściwość $_explicitType. Tutaj wpisujemy alias jakiego będziemy używać po stronie flasha dla danej klasy w amfie.

Pora na kod AS:
  • odpowiednik phpowej klasy UserVO
public class UserVO
{
public var login : String ;
public var pass : String ;
}
  • niezbędny kod do pobrania obiektu UserVO
registerClassAlias( 'vo.UserVO' , UserVO ) ; 

var nc : NetConnection = new NetConnection ;
function result( o : Object ) : void
{
var user : UserVO = o as UserVO ;
trace( user ) ;
}
nc.call( 'User.getUserData' , new Responder( result , null ) ) ;
Ważna rolę odgrywa tutaj metoda registerClassAlias która odpowiada za rejestrację aliasu użytego w klasie UserVO, a tym samym prawidłowe mapowanie przesłanych danych na obiekt UserVO we flashu.

Brak komentarzy:

Prześlij komentarz