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. ![]()
Tvorba aplikace
Vytvořte projekt: File -> New -> Flex project
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();
}
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.

Nejnovější komentáře