Recenze vyšla v časopisu Connect 6/07 pod názvem Práce kvapná, málo platná.
Delphi for PHP je nový produkt firmy CodeGear (vzešlé z firmy Borland), který dovoluje vytvářet webové aplikace v programovacím jazyce PHP stejně pohodlně, jako se vytvářejí desktopové aplikace v Delphi. Využívá se k tomu volně dostupná knihovna komponent VCL for PHP (Visual Component Library od firmy Qadram) a propracované vývojové prostředí.
Instalace probíhá bez problémů a jediné, co nás v dnešní době může překvapit, je vytvoření kořenového adresáře tmp
, který se používá pro ukládání zkompilovaných šablon Smarty. Tento adresář byl zvolen pravděpodobně kvůli snadnému vystavení vytvořeného projektu na Unixové servery, pro nasazení na zabezpečené servery ho ale stejně bude nutné obvykle změnit. To bohužel nejde udělat jinak než editací zdrojového kódu knihovny VCL.
Instalace obsahuje i vlastní kopii webového serveru Apache a interpretu PHP, takže Delphi for PHP jejich přítomnost nevyžaduje.
Po nainstalování a spuštění nás přivítá podobné vývojové prostředí, jaké známe z Delphi nebo Visual Studia. Plocha pro kreslení okna a paleta známých komponent vzbuzuje dojem, že budeme vytvářet desktopovou aplikaci, proto nás může překvapit, že výsledek našeho snažení poběží v běžných webových prohlížečích. Webové prezentace mají přece jen jiné zvyklosti než desktopové aplikace, proto se tento režim hodí jen pro specifické použití (webmailový klient, administrační rozhraní, možná i Intranet). Pokud potřebujeme vytvořit běžnou webovou prezentaci, lze využít vestavěnou podporu šablonovacího systému Smarty s tím, že i v rámci šablon můžeme používat komponenty VCL.
Přidávání objektů ve Form Designeru generuje zdrojový kód, který bohužel nerespektuje nastavení editoru pro odsazování. Pokud do tohoto kódu začneme cokoliv dopisovat, spolehlivě se odsazení rozhodí. K duhu tak přijde nástroj Source Formatter, který má dokonce i vlastní klávesovou zkratku. Nastavení objektů z Object Inspectoru je ukládáno do souboru s koncovkou .xml.php
, který zřejmě z důvodu ochrany proti zobrazení zdrojového kódu XML dat začíná značkou <?php
. Škoda, že tato myšlenka nebyla dotažena do konce, např. zavoláním PHP funkce __halt_compiler
. Za současného stavu se při zadání názvu těchto souborů do adresního řádku prohlížeče zobrazí chybová hláška. Hodnoty se při ukládání do tohoto souboru navíc odpovídajícím způsobem neošetří, takže např. zadání hodnoty </property>
učiní soubor nečitelným.
Pomocí Object Inspectoru lze editovat jednotlivé vlastnosti komponent (jako třeba šířku nebo popisek), nastavovat obsluhu událostí ošetřovaných na straně serveru a také na straně prohlížeče v JavaScriptu. Pomocí vlastností formuláře TemplateEngine
a TemplateFilename
lze kód aplikace propojit se šablonovacím systémem, který se bude starat o vypisování HTML kódu. Pokud tuto funkci použijeme, přestane bohužel fungovat obsluha událostí v JavaScriptu. Když vygenerování HTML necháme na Delphi for PHP, dostaneme sice nevalidní, ale ne nijak příšerný kód.
Vývojové prostředí umožňuje i ladění aplikací, ke kterému se používá nástroj PHP DBG, který se dá stáhnout a používat i nezávisle na Delphi. Ladění nabízí obvyklé základní operace jako je definování zarážek, krokování kódu a sledování kukátek.
Nezbytnou součástí většiny webových aplikací je práce s databází. Paleta Data Explorer umožňuje přímo pracovat s databázemi MySQL a Interbase, pro přístup k databázím se ale používá knihovna ADOdb, která dovoluje pracovat i s řadou dalších databází. Z Data Exploreru lze do formuláře přetahovat tabulky a jejich sloupce, což způsobí vytvoření komponent pro přímou editaci záznamů.
Potenciálně užitečnou, nicméně poměrně obtížně použitelnou funkcí je internacionalizace aplikace. Knihovna VCL k tomu využívá rozšíření Gettext a průvodce zabudovaný v Delphi for PHP umožňuje shromáždit překládané texty a určit jazyky, ve kterých naše aplikace bude běžet. Překládané texty se shromažďují bohužel pouze ze zdrojového kódu. U formulářů je možné vlastností Language
určit, ke kterému jazyku se vztahují – úprava téhož formuláře ve všech jazycích je nicméně úmorná manuální práce. Překlad textů v šablonách není řešen vůbec, přestože pro Smarty existuje doplněk, který umožňuje rozšíření Gettext používat. Přepínání jazyka je ponecháno v režii aplikace.
Nezbytnou součástí vývoje programu je přesun z vývojového počítače na produkční server. K tomu je určen nástroj Deployment Wizard, který do určeného adresáře nahraje všechny soubory z projektu a do podadresáře vcl
také nezbytné části knihovny VCL. Pokud chceme na běžný webhosting umístit jeden projekt z Delphi for PHP, je tato funkce velice užitečná, pokud máme ale na serveru projektů více, je vhodnější do sdíleného adresáře nahrát celou knihovnu VCL, takže ji bude možné také snadněji aktualizovat. Deployment Wizard nefunguje zcela dokonale – např. šablony uložené v jiném adresáři než hlavní kód jsou nahrány do stejného adresáře, ale v kódu je ponechána relativní cesta, takže program bez dalších zásahů nefunguje.
Nápověda ve formátu HTML Help má dvě části – jednu pro samotné vývojové prostředí a druhou pro knihovnu VCL. Nainstaluje se i nápověda PHP, ta je však při pokusu získat nápovědu k PHP funkci ve zdrojovém kódu neaktivní. Naopak se používá u šablon, kde by se asi lépe hodila nápověda pro Smarty. Nápověda je na většině míst velice strohá – např. kontextová nápověda v Object Inspectoru u políčka Action
u formuláře nás zavede na stránku nápovědy Page.getAction
, kde je uveden popis „Action property“. Pro pochopení toho, co která funkce dělá, je proto nutné se často podívat i do zdrojového kódu VCL. Pro základní seznámení s nabízenými funkcemi je k dispozici několik tutoriálů v nápovědě vývojového prostředí a také několik ukázkových aplikací. Nehledejte je však přímo v nainstalovaném adresáři nebo v podadresáři help
, k dispozici jsou v podadresáři vcl\samples
.
Poměrně rychlé vydání Delphi for PHP se bohužel neobešlo bez několika komplikací – mimo jiné nefungovalo ukládání řetězců v kódování UTF-8 a projekty bez změny zdrojového kódu VCL nešly spustit v PHP 5.2.1. Krátce po vydání oficiální verze naštěstí následoval první update, který ty nejzávažnější nedostatky řeší. Registrovaní uživatelé si ho mohou zdarma stáhnout z Internetu.
Pokud se chystáte vyvíjet funkčně bohatou aplikaci, která má běžet ve webovém prohlížeči, je Delphi for PHP myslím dobrá volba bez velké konkurence (pro čistě desktopovou aplikaci je možné použít PHP-GTK). Jestliže hledáte vývojové prostředí pro PHP, existují myslím lepší aplikace (např. Zend Studio, Eclipse nebo i některé textové editory), Delphi for PHP v tomto ohledu nabízí komfort spíše podprůměrný. Pokud chcete vytvořit běžnou webovou prezentaci, lze k tomu Delphi for PHP díky podpoře šablonovacího systému také použít – otázka je, zda prostředí nabízí dostatečnou přidanou hodnotu, když Smarty i VCL jsou k dispozici zdarma.
Na různých místech je vidět, že vydání Delphi for PHP bylo trochu uspěchané – děravá nápověda, zdrojový kód VCL hemžící se komentáři „TODO“ nebo třeba prázdný soubor help\getting_started.htm
. V dalších verzích se to však jistě zlepší a pokud se s těmito několika nepříjemnosti dokážete poprat, dá se o Delphi for PHP uvažovat již nyní – pro vývoj bohatých aplikací spouštěných z prohlížeče má před sebou myslím slibnou budoucnost.
Diskuse je zrušena z důvodu spamu.