Phalanger: postavte si aplikaci pro desktop s využitím PHP (praktická ukázka)

Platforma .NET má tu výhodu, že pro ni existuje množství programovacích jazyků, takže nejste omezeni třeba jen na C# nebo VB.NET. S pomocí projektu Phalanger můžete vytvořit .NET aplikaci pro web či desktop s využitím jazyka PHP. V článku si vyzkoušíme vytvoření jednoduchého programu pro příkazový řádek Windows.

Reklama

Když se platforma .NET objevila, přišel Microsoft zároveň s několika výchozími jazyky, které slouží pro tvorbu aplikací určených pro tuto platformu. Základní sadu C#, VB.NET a C++ .NET brzy doprovodil funkcionálně orientovaný F# a řada dalších jazyků známých i z doby přes .NET: Python, NetCOBOL, Fortran, Haskell, JScript.NET a jiné, viz přehled jazyků pro .NET.

Takové množství jazyků pro .NET vzniklo díky tomu, že v podstatě kdokoli s potřebnými schopnostmi může napsat převodník daného jazyka do standardizovaného jazyka CIL. Teprve ten je platformou .NET a kompilátorem JIT přeložen pro procesor počítače a vykonáván.

Phalanger, PHP a .NET

Kromě zmíněných jazyků se objevila i podpora PHP, tedy programovacího jazyka, který je v podstatě konkurenční z hlediska vývoje webu - drtivá většina vývojářů se rozhoduje mezi PHP a .NET (s dovolením pominu RoR a spol.). S využitím projektu Phalanger můžete prakticky libovolný kód psaný v PHP zkompilovat pro platformu .NET.

Zkompilovaný kód by měl běhat rychleji, než interpretovaný skript. Tedy, při prvním spuštění na serveru je kód v PHP (nebo jiném jazyce pro .NET) kompilován a při dalším požadavku už je vždy volána jeho zkompilovaná a spustitelná verze, zatímco u běžných stránek psaných v PHP se pokaždé znovu interpretuje napsaný kód.

Že Phalanger není určen jen pro nějaké jednoduché skripty, které chcete z nějakého důvodu spustit v .NET, dokazuje možnost provozu WordPressu, Drupalu nebo jiných větších projektů psaných v PHP na serveru podporujícím čistě jen .NET, tedy na serveru, na kterém se PHP vůbec nenachází. Viz přehled.

Navíc, své kousky kódu psaného v PHP můžete jednoduše zkompilovat jako knihovny DLL a poté je používat i v jiných programovacích jazycích pro .NET, typicky třeba v mém oblíbeném C#.

PHP na desktopu

Jedním (nechci vyloženě psát vedlejším) z efektů podpory PHP pro .NET za pomoci Phalangeru je možnost vytvářet desktopové aplikace běžící buď v grafickém rozhraní s Windows Forms nebo v příkazovém řádku. Něco podobného slibovalo/slibuje PHP GTK, ale přiznám se, že netuším, v jaké je tento projekt fázi, ani zda je již plně funkční. Naproti tomu se Phalanger tváří jako dospělý produkt a také tak funguje.

Možností, jak vytvořit desktopové aplikace pomocí Phalangeru je několik. Já dávám přednost jeho instalaci do Visual Studia 2010, která je maximálně pohodlná, probíhá pomocí průvodce staženého z webu Phalangeru a ve Visual Studiu vám připraví nové projekty jak pro web, tak pro desktop.

Pokud Visual Studio nemáte, nemusíte si zoufat. Phalanger je samozřejmě použitelný i bez něj. Obsahuje totiž kompilátor pro .NET v podobě souboru phpc.exe, kterému na příkazovém řádku předáváte potřebné instrukce ke kompilaci svých PHP souborů. Chcete-li ale něco pohodlnějšího a zároveň se obejít bez Visual Studia, koukněte na projekt PHPBinding, který propojí Phalanger s vývojovým prostředím SharpDevelop. Přiznám se však, že jsem tuto kombinaci nezkoušel.

Phalanger prakticky - aplikace zjišťující pozici stránky na Seznam.cz

Abych demonstroval jednoduchost, s jakou pomocí Phalangeru vytvoříte běžnou desktopovou aplikaci, rozhodl jsem se vytvořit ukázkový projekt, který po zadání klíčového slova a adresy webu, zjistí jeho pozici ve vyhledávači Seznam.cz. Výstupem z následující ukázky bude plnohodnotná aplikace pro .NET, chcete-li soubor EXE, který ve Windows otevře příkazový řádek a zpracuje popsaný úkol.

Pokud vás toto zaujme, můžeme si v nějakém dalším článku dát pokračování a celou aplikaci převést z příkazového řádku do klikacího rozhraní Windows Forms, samozřejmě stále s Phalangerem a PHP.

Začněte tedy tím, že si otevřete Visual Studio, ve kterém uvidíte po instalaci Phalangeru novou položku s nabídkou vytvoření PHP aplikace běžící v příkazovém řádku - Phalanger Console Application. Pozor, nezaměňujte jej s PHP Console Application - v ní byste mohli používat jen a pouze funkce z PHP, někdy ale můžete v projektu potřebovat použít volání i standardních knihoven z prostředí .NET. Projekt pojmenujte třeba PoziceNaSeznamu a založte jej.

Phalanger

Vytvoření nového projektu ve Visual Studiu 2010

Vznikne vám nová struktura se zdrojovým kódem nové aplikace, kde se vše hlavní odehrává v souboru Program.php. Jak můžete vidět, je zde podobně jako v C# třída Program a funkce Main(), ve které se odehrává vše důležité. Nyní jsou zde jen dva řádky - první je dobře známá funkce echo.

Na webu by se vypsal řetězec do těla webové stránky, v tomto případě slouží funkce echo k vypsání texu do příkazového řádku. Druhá funkce slouží k přečtení textu z příkazového řádku. Čeká tedy, než uživatel něco napíše, případně než stiskne klávesu Enter. Díky tomu se program po spuštění hned nezavře a vy můžete vidět jeho výstup. Následuje návratová funkce return, kterou byste mohli využít k vrácení odpovědi jinému programu, kdyby spouštěl ten váš.

Phalanger

Výchozí kód PHP pro Phalanger a .NET

Vyzkoušejte nyní kompilaci a spuštění výchozího projektu aplikace pro příkazový řádek. Ve Visual Studiu zavolejte funkci Debug > Start Debugging, nebo jen stiskněte klávesu F5. Mělo by se objevit okno příkazového řádku, ve kterém se objeví pozdrav a následně bude příkazový řádek čekat na stisk klávesy Enter. Poté se program se ukončí a okno příkazového řádku zmizí.

Phalanger

Výsledná podoba vzorového kódu ve formě aplikace na příkazovém řádku

Můj návod by tím mohl skončit také, protože vytvoření první funkční aplikace v PHP, která běží na desktopu, máte právě za sebou. Ale protože jsme si slíbili něco praktického, pokračujme dále. V první řadě si vyzkoušíme zpracování vstupu uživatele na příkazové řádce. Požádáme jej o zadání adresy webu a klíčového slova, které budeme chtít při prohledávání výsledků na Seznam.cz použít. Tyto dva údaje předáme do proměnných a poté je uživateli zase zobrazíme. V tuto chvíli nic více.

Když aplikaci v tuto chvíli spustíte, zobrazí požadavek na adresu webu a na dalším řádku bude čekat na váš vstup. Totéž pro hledaný výraz. Následně obojí spojí s dalším textem a výsledný řetězec vám zobrazí. Poté počká na stisk klávesy Enter.

Doposud jsme pracovali pouze s funkcemi echo a fgets. Nyní budeme v naší jednoduché SEO aplikaci pracovat s regulárními výrazy. V první řadě sestrojíme URL pro stránku s výsledky hledání. Seznam.cz podporuje na jedné stránce maximálně dvacet výsledků, pokud doplníte parametr count. Jako hodnotu parametru q doplníme klíčové slovo získané jako vstup od uživatele. Použijeme funkci urlencode(), která převede případné mezery a další znaky v klíčovém slovu na URL zápis.

Funkcí file_get_contents() získáme zdrojový kód stránky s výsledky hledání. Následuje sestrojení regulárního výrazu, který nám vrátí ty části kódu stránky, které obsahují jednotlivé výsledky hledání. Následně regulární výraz použijeme ve funkci preg_match_all(). Poté už jen jednoduchou smyčkou procházíme jednotlivé výsledky hledání a funkcí stristr() zjišťujeme, zda v nich figuruje zadaná webová adresa.

Phalanger

Výsledný zdrojový kód aplikace v PHP pro Phalanger

K zjišťování přítomnosti zadané webové adresy ve výsledcích snad jen ještě jedna poznámka: pokud bude ve výsledcích hledání stránka, která ve své adrese zároveň obsahuje klíčové slovo (třeba polzer.cz a slovo polzer), pak toto slovo může být obaleno do dalšího formátování (typicky do značky <b>). Pomocí funkce strip_tags() proto odstraníme všechny tagy s výjimkou těch, které jsou ve funkci uvedeny jako druhý argument.

Zbývá jen zobrazit informaci o tom, na kolikáté pozici ve výsledcích hledání byl web nalezen, případně informaci o neúspěchu. Tím je naše SEO aplikace a zároveň první aplikace vytvořená pomocí PHP a zkompilovaná coby .NET aplikace fungující v příkazovém řádku hotova.

Phalanger

Výsledná SEO aplikace v PHP běžící coby aplikace pro příkazový řádek Windows

Jak už jsem zmínil, pokud bude zájem, přidám k článku druhý díl, ve kterém tuto aplikaci převedeme do grafické podoby s oknem, políčky a tlačítky. Samozřejmě opět s využitím Phalangeru a PHP. Svůj zájem můžete projevit komentáři, nalinkováním článku, hlasy na Facebooku či Twitteru nebo Google+.

Na závěr ještě to hlavní - v příloze najdete kompletní zdrojový kód této aplikace, stačí jej pouze otevřít ve Visual Studiu 2010 s instalovaným Phalangerem a zkompilovat si vlastní EXE.

Reklama

Komentáře

Pěkný příklad, rád bych pro příznivce MVC odkázal na www.infoq.com/articles/Phalanger (business logika v C# a prezentační vrstva v PHP) a pro zastánce F# github.com/robertpi/PicoMvc (kde je model a controller v F#). Případně Phalanger twitter (@phpcompiler) pro další novinky.

Díky. Doplňuji ještě odkaz na Váš blog o Phalangeru :) www.php-compiler.net

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Přidat komentář