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:
class UserVO
{
public $_explicitType = 'vo.UserVO' ;
public $login ;
public $pass ;
}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.