Adobe eSeminár - Flex pre PHP vývojárov

Ďalší z rady eSeminárov firmy Adobe bol zameraný na možnosti Flexu a jeho prínosu pre PHP vývojárov. Flex vďaka svojej štruktúre môže veľmi zjednodušiť prácu pri vytváraní GUI rozhrania k web aplikácii. O tom, ako je to možné dosiahnuť a aké podporné nástroje existujú, hovoril Mike Potter.

Seminár začínal tentokrát o 20:00 (11:00 US/Pacific). Zúčastnilo sa ho zhruba 50 účastníkov, prevažne z USA a Európy. Začiatok bol mierne zdržaný, pretože boli problémy s audiom. Po chvíli sa organizátorom podarilo spojazdniť audio prenos a seminár mohol začať.

Prvá informácia bola rovnaká ako v seminári Flexe a Java. Išlo o predstavenie posunu vývoja aplikácii do oblasti RIA (Rich Internet Application). Tento prechod Mike demonštroval na rozsiahlych aplikáciách, ktorých grafické rozhranie bolo napísané pomocou Flexu a ako backend a konektor na databázu slúžilo PHP.

Projekt Yahoo Maps bol napísaný s použitím Flex 1.5 a PHP aplikácií na strane serveru. Activa Live Chat je ďalší kus softvéru vytvoreného na základe kombinácie Flex a PHP. Zaujímavá aplikácia je finetune, jedná sa o web aplikáciu na prehrávanie hudby a hľadanie interpretov. K web aplikácii existuje aj desktopový klient, ktorý je previazaný a obe aplikácie navzájom dokážu komunikovať. Takže pokiaľ si používateľ vybral na webe nejaké CD, zobrazili sa informácie o ňom aj v desktopovom klientovi.

Po tejto krátkej chuťovke, nasledovalo priblíženie Flexu ako takého. Mike ho rozdelil do troch častí. Flex SDK predstavuje základ pre vývoj vo Flexe, obsahuje Flex framework, kompilátory a debugger. Flex SDK je k dispozícii zdarma. Druhou časťou je Flex Builder, čo je IDE postavené na Eclipse . No a poslednou časťou, ktorá by pre vývojárov mohla byť zaujímavá je Charting. Pomocou charting je možné vytvárať aplikácie s prepracovaným zobrazovaním grafov.

Prejdime k dôležitým informácia pre PHP vývojárov. Je nutné si uvedomiť, že Flexová aplikácia beží na klientskej strane v prehliadači. Tým pádom, pokiaľ je treba získať nejaké informácie z databázy, je nutné naprogramovať funkcie v PHP, ktoré tieto dáta získajú a odošlú aplikácii. Toto môže vyzerať ako veľká prekážka, ale Mike ukázal, že je to skutočne jednoduché a dokonca s použitím Flexových komponent ako rozhraní k web aplikácii sa môže PHP kód značne zredukovať a zoptimalizovať.

PHP je interpretovaný jazyk, nie je pre jeho beh nutné vytvárať binárny súbor a kompilovať ho. Flex naopak je kompilovaný, takže výstup je ukladaný do bytecodu pre Flash player. Ale aj v tomto bode ide Flex dopredu. Aplikácie je možné totiž kompilovať na serveri, takže vývojár nie je zaťažovný kompilačnou procedúrou. Naviac Flex Builder má zabudovanú podporu pre automatickú kompiláciu, čo môže znížiť dobu čakania na zostavenie výslednej aplikácie.

Ako je možné teda napojiť Flexovú aplikáciu na PHP kód? Prvé riešenie je použitie protokolu REST, kedy sa na strane servera vygeneruje XML, ktoré je potom klientom spracované. Príklad:

 <person>
  <name>Arnošt</name>
  <name>Topinka</name>
 </person>

Písanie funkcií generujúcich XML môže byť ale zdĺhavé. Preto je lepšie použiť textový formát JSON. Je jednoduchší na spracovanie a pomerne bežný. Podporuje ho veľa technológii ako Ajax, Zulu a ďalšie. Príklad:

 {"name": "Arnošt", "surname": "Topinka"}

Pomocou funkcií JSON.encode a JSON.decode je možné jednoducho prenášať dáta medzi aplikáciami. PHP priamo obsahuje funkciu json_encode.

JSON je textový formát a pri prenose obrovských objemov dát medzi klientom a serverom, môže byť nevýhodný. Z dôvodu optimalizácie bol navrhnutý binárny formát AMF (Action Message Format). Rozšírenie pre PHP s názvom AMF PHP dovoľuje integrovať komunikáciu prostredníctvom tohoto formátu do PHP aplikácie.

Pri vývoji spolupracujúcich aplikácii postavených na Flexe a PHP, je nutné vytvoriť dobré rozhranie na strane servera. Výhodou RESTu a JSONu, je to, že výstup je možné jednoducho otestovať zavolaním funkcie z web prehliadača. Pri binárnom formáte AMF, to až také jednoduché nie je. Na zistenie stavu komunikácie medzi klientom a serverom odporúčajú Flex vývojári serviceCapture. Ja sem dopĺňam výborný nastroj na sledovanie komunikácie na úrovni paketov, ktorý je neoceniteľný pri ladení programov. Jedná sa o Wireshark (predtým známy pod menom Ethereal)

Napríklad pre CMS systém ako Drupal existuje rozšírenie, ktoré je možné využiť pri pripájaní Flex aplikácie.

Pár odkazov, ktoré by PHP vývojári nemali prehliadnuť. Flex.org - sekcia PHP, je dobrým štartovacím miestom. V diskusných skupinách sa môžete obrátiť na ostatných vývojárov so žiadosťou o pomoc alebo radu.

Seminár hodnotím ako prínosný pre nových záujemcov o Flex. Počas seminára dva krát vypadlo audio, našťastie sa podarilo tento problém organizátorom vyriešiť. Na záver sa konalo losovanie o licenciu na Flex Builder 2.

Teraz bude nasledovať drobná pauza medzi seminármi. Najbližší sa bude konať 10.7.2007 o 20:00 (11:00 US/Pacific). A bude to opakovanie (možno s miernym rozšírením) semináru Flex pre Java vývojárov. Opäť sa bude losovať licencia na Flex Builder 2.


Zodpovedajuce XML

Len by som si dovolil upresnit XML-ko a zodpovedajuci JSON-ovy zapis

ku XML-ku

<person>
    <name>Arnost</name>
    <surname>Topinka</surname>
</person>

je strukturne (zhruba) zodpovedajuci JSON-ovy zapis

{ "person" : { "name" : "Arnost" , "surame" : "Topinka" } }

pripadne komplikovanejsi priklad XML-ka

<people>
    <person>
        <name>Arnost</name>
        <surname>Topinka</surname>
    </person>
    <person>
        <name>Bruno</name>
        <surname>Smazak</surname>
    </person>
</people>

a prisluchajucej JSNO-ovej reprezentacie

{
    "people": [
        {   
            "person": {
                "name": "Arnost",
                "surame": "Topinka"
            }   
        },
        {
            "person": {
                "name": "Bruno",
                "surame" : "Smazak"
            }
        }
    ]
}

Samozrejme, ze zoznam ludi by sa dal zapisat aj inak (napriklad iba ako pole ludi) ale snazil som sa vyjadrit strukturne rovne objekty.


Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na "Uložit změny".
Syndikovat obsah