Prskavčí blog

Jun 12, 2008 - Comments

Jednoduchá aplikace v PHP a Flex

Protože jsem byl na Adobe Air nedalo mi to a řekl jsem si že udělám jednoduchou aplikaci pro vyhledávání v našem univerzitním LDAPu. Stáhnul jsem si trial verzi Flex Builduru 3, to se ocení zvláště pokud chcete dát aplikaci nějaký design. Výsledná aplikace vypadá takto, skládá se z několika prvků, textové pole (mx:TextInput), tlačítka (mx:Button), výběr (mx:ComboBox), ty jsou strčené do společného hboxu. Potom dole je umístěný datagrid (mx:DataGrid) pro zobrazování dat. image

Tvorba aplikace

Vytvořte projekt: File -> New -> Flex project image Tady je vidět, že nejdůležitější je nastavit mx:HTTPService na komunikaci s naším PHP skriptem, který funguje normálně jako u webové aplikace nebo spíše u AJAXové aplikace. Data vracím v XML, aby se dobře zobrazovali pomocí datagridu, ale mohl by to být i obyčejný text.
               {txtInput.text}
            {department.text}
Tady je část mx:Script, která se stará o ošetření toho co přijde z PHP a zobrazuje to.
           import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            import mx.collections.ArrayCollection;

        public function handleResultXML(event:ResultEvent):void {
            // the result object is our xml root
            // we get the row nodes of our result object
            // the data of the dataprovider populates the component
            myDataGrid.dataProvider = event.result.row;
        }
        // this function is called when we get an error from the server
        public function handleFault(event:FaultEvent):void {
                //txtArea.text = "Fault Response from HTTPService call:\n " + event.fault.toString();
        }</pre>

Vlastní PHP skript je jednoduchý, používá mojí knihovnu, kde zadáte část jména a vrátí celé jméno i s tituly a k tomu odpovídající telefon.

$debug=false;
/**
  * Flex SSU
  */
if (!$debug) $name=$_REQUEST[‘query’];
else $name=‘prskavec’;
error_log(”[“.date(‘r’).”] Query: “.$_REQUEST[‘query’].” Department:“.$_REQUEST[‘department’].”\n”,3,“./flex.log”);

if ($_REQUEST[‘department’]==“VIC”) $vic=true; else $vic=false;

include “inc/config.inc.php”; include_once “inc/ldap_class.php”; $ldap=new Ldap($config);

print “”; print “”;

foreach ($ldap->get_person($name,$vic) as $person) { $phone=$ldap->ldap_phone($person[‘cvutphone’][‘0’]); if (!empty($phone)) { if ($debug) var_dump($person); print “”; print “”.$person[‘cn;lang-cs’][‘0’].“”; print “”.$phone.“”; print “”.$person[‘preferredemail’][‘0’].“”; print “”;

error_log("[".date('r')."] Result: ".$person['cn;lang-cs']['0']." | ".$phone." | ".$person['preferredemail']['0']."\n",3,"./flex.log");
}

} print “”;

Pokud vám všechno funguje v Flex builderu, stačí dát Project -> Export Release Build a vytvořit AIR soubor, který je nainstalovatelný jako desktopová aplikace.

Závěr

Přijde mi to rozhodně jednodušší než PHP-GTK. Jednoduchá aplikace, kterou používám denně, obdobných aplikací jsou dnes desítky a nejlepší mi přijde, že se dá udělat pěkné rozhraní k online službě v PHP a nedá to moc práce a na straně PHP není žádná práce navíc. Vlastní tvorba GUI dá zabrat podle mě všude.

Tags: adobe adobe-air flex php

on Air Tour v Praze a tři videa ode mne

comments powered by Disqus