Stranice koje svaki pošteni IT-jevac stavlja na zadnje mjesto
RSS icon Email icon Home icon
  • Započnite koristiti AMFPHP

    Objavljeno: 23.05.2009. 17:16 admin 2 komentara

    AMFPHPAMFPHP je razvijena PHP platforma za komunikaciju Flex / Flash / Air aplikacija s  PHP  serverom putem AMF protokola. Prednosti AMF protokola u odnosu na klasično pozivanje servera putem HTTP servisa  su mogućnost mapiranja podataka na serveru i bolje performanse u razmjeni informacija između računala klijenta i servera na kojemu se vrti PHP kod.

    AMFPHP je bio jedan od prvih serverskih dodataka za razvoj Flex web aplikacija koje u pozadini koriste PHP i AMF protkol. Najnoviju verziju AMFPHP-a možete skinuti na www.amfphp.org. Nakon što skinete AMFPHP, sadržaj arhive pohranite na direktorij na lokalnom ili udaljenom serveru.

    Recimo, napravite direktorij “amf” i u njega pohranite sadržaj čitave arhive. Ako to radite na lokalnom serveru, onda bi to trebao biti direktorij kojemu se može pristupiti preko linka: http://localhost/amf/. U mojim primjerima ćete vidjeti da obično koristim neki drugi testni server, pa onda i vi možete napraviti tako, inače samo prepravite URL-ove i sve će normalno funkcionirati.

    Da biste bili sigurni kako je AMFPHP ispravno instaliran, pristupite serveru putem linka i pokrenit gateway.php datoteku. Ako je sve u redu, trebali biste dobiti poruku kako je AMFPHP uredno instaliran i da možete pristupiti njegovom service browseru. Ako ne dobijete tu poruku, onda najvjerojatnije niste dobro raspakirali datoteke.

    Service browser je odlična opcija u AMFPHP libraryju, a pomaže vam pregledati sve postojeće PHP servise koje imate na serveru.

    Service browser - preglednik AMFPHP servisa na Vašem serveru

    Da biste napravili uspješan primjer komunikacije Flexa i PHP-a trebate napraviti testnu bazu podataka, kopirati PHP datoteke iz priložene arhive i u Flex Builder importati Flex projekt iz dolje navedenih arhiva. Tu ne bi trebalo biti nikakvih problema. Testna MySQL baza podataka sadrži podatke o nogometnim momčadima, igračima iz tih momčadi i pozicijama na kojima oni igraju.

    PHP datoteke treba pohraniti u AMFPHP direktorij services, jer se tamo pohranjuju svi PHP servisi. Unutar direktorija se nalaze dva poddirektorija, jedan u kojem se nalaze naši testni servisi, a u drugom se nalaze PHP klase koje ćemo koristiti za pohranu informacije. Idemo pogledati kako izgledaju ti servisi. Za potrebe ovog recepta napravio sam jednostavnu PHP klasu koja sadrži dvije metode:

    FlexAMFPHP.php
    class FlexAMFPHP
    {
       function communicationTest()
       {
          return 'Connected to AMFPHP!';
       }
       function checkAnotherMethod()
       {
           return 'Another method is checked!';
       }
    }

    Bitno je naglasiti kako klasa untar datoteke mora imati isti naziv kao i sama datoteka. Sada kada imamo PHP servis, trebamo pogledati da li smo na server stavili crossdomain.xml datoteku, kojom se definiraju pravila pristupa remote klijenata na server. To znači da na server treba staviti datoteku kako bi Flex aplikacije (koje se vrte na klijentu) mogle pristupiti našem PHP serveru. Ovu datoteku stavite u root direktorij servera. Dolje je naveden osnovni sadržaj crossdomain.xml datoteke, a više o definiciji te datoteke može pronaći na Googleu.

    crossdomain.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
     <allow-access-from domain="*" />
    </cross-domain-policy>

    Drugi PHP web servis će dohvaćati podatke o igračima i momčadima. Navedena klasa SoccerMannager dohvaća informacije o momčadima i igračima koji igraju za nju. Te informacije se pohranjuju u dvije PHP klase:

    class Team
    {
       public $id;
       public $title;
       public $league;
       var $_explicitType = "org.zgflex.Team";
    // bitno navesti path, radi mapiranja s Actionscript klasom
    }
    class Player
    {
       public $id;
       public $name;
       public $team_id;
       public $team_title;
       public $team_league;
       public $position_id;
       public $position_title;
       var $_explicitType = "org.zgflex.Player";
    }
    ?>

    Trik kod korištenja AMF protokola je mapirati PHP i ActionScript klase. Tako ćete unutar Flex projekta imati slične ActionScript klase koje se nalaze u org.zgflex packageu. Na taj način će Flex dobiti podatke u obliku pojedinih objekata, te će ih smatrati Flex objektima koji su instanca pojedine klase koju smo napisali u Actionscriptu.

    U SoccerManager.php klasi podesite parametre za pristup MySQL bazi podataka. Možete testirati navedenu klasu i preko service browsera.

    Ostaje nam još učitati Flex projekt koji sadrži potrebne komponente. Za pristup servisima u Flexu se koristi datoteka service-config.xml, u kojoj se mora navesti na koju lokaciju gleda naša aplikacija. Stoga provjerite da li je URL u toj datoteci ispravan, a on treba gledati amf/gateway.php datoteku.  Također, kako bi Flex projekt koristio ovu XML datoteku, potrebno je koristiti ju kao izvor informacija kod kompajliranja projekta, pa je u postavkama Flex projekta potrebno staviti ovaj compiler parametar:

    -locale en_US -services "services-config.xml"

    Pokrenite Flex projekt i testirajte jednostavni i malo složeniji PHP servis. Flex se spaja na PHP servise putem RemoteObject instanci, kojima se predaju parametri po definiranim metodama. Rezultat sa servera se dohvaća u određeni resultHandler, a response se prihvaća kao result objekt iz pripadajućeg ResultEventa.

    I to bi bilo to. Ako imate kakvih problema, slobodno ih javite :)

    Source: Započnite koristiti AMFPHP

     

    2 komentar(a) na temu “Započnite koristiti AMFPHP” RSS icon

    • Iz nekog razloga ne radi komunikacija flexa i php a. Pomocu browsera testirao sam servise i rade bez problema. Dakle problem mi je konekcija Flexa i PHP – a. Dobijem poruku Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: ‘http://amf/gateway.php’. Mijenjao sam path do gateway.php u services-config.xml a da odrazava situaciju na mom disku, ali bez uspjeha.

    • Pozdrav, Gorane. Na kojoj se web adresi nalazi tvoj PHP kod? Kod mene se nalazi na virtualnoj lokalnoj adresi amf. Možda trebaš gledati na http://localhost/amf ? Možeš li mi navesti koji ti je path u browseru kada gledaš servise, a koji u services-config.xml?


    Ostavite komentar: