WinBinder - egy újabb lélegzetelállító projekt
Gondoltál már arra, hogy milyen jó lenne asztali alkalmazást fejleszteni PHP-vel? Szerettél volna már CD-ről telepítés nélkül futtatható programot kínálni ügyfelednek kevés vesződséggel, PHP-ben fejlesztve? Biztos vagyok benne, hogy olvasóink nagy része ezen kérdésekre igennel válaszol. Nos, eddig sem kellett messzire menni, rendelkezésre állt a PHP-GTK, csak hát azt nem lehet állítani, hogy a PHP-GTK jelenlegi megvalósítása felhasználóbarát lenne. Sem a programozó, sem a végfelhasználó számára. Sejthető, hogy készül egy jobb megoldás, mert különben nem korbácsoltam volna fel a kedélyeket. Lássuk!
A PHP-GTK ugyan keresztplatformos fejlesztést tesz lehetővé, Windows felhasználók számára felülete mégsem barátságos, hiszen nem a natív felületi elemeket használja. Ráadásul a fejlesztőknek is meggyűlhet vele a bajuk, hiszen összetett eseménykezelő rendszere és objektum-orientált felülete elsőre nem könnyen érthető.
Nemcsak ezeket a problémákat próbálta megoldani Rubem Pechansky, hanem még többet is. Megvizsgálta a Windows rendszerekre elérhető programozási felületeket, és azt tapasztalta, hogy egyik sem nyújtja az egyszerű programozhatóság és a végfelhasználóbarátság kellő kombinációját. Ezért úgy döntött, hogy elkészíti a WinBinder nevű nyílt forráskódú termékét, ami több izgalmas eredményre is vezetett.
Elsődleges célja, hogy a Windows programozási felületéhez illessze a PHP-t, egyszerű függvény orientált megoldásokat is biztosítva az objektumok használata mellett. Így mindenki megválaszthatja a saját stílusának megfelelő megközelítést. A WinBinder segítségével készült programok nem igényelnek telepítést a felhasználó rendszerén, a PHP minden kiterjesztésével együttműködnek, és ráadásul teljesen Windows alkalmazás kinézetet kapnak.
Olyannyira összeépülnek a WinBinder segítségével készült programok a Windows rendszerrel, hogy RC (erőforrás) állományokat is használhatunk, így a programunk felületét előkészíthetjük a Microsoft valamelyik vizuális szerkesztőjében is, míg a tényleges viselkedést már PHP-ben valósíthatjuk meg.
A WinBinder azonban nem eszetlen kódolás eredményeképpen született meg, a tervező szeme előtt szélesebb célok lebegtek. Íme a megvalósítás elemeit szemléltető ábra:
Az ábrán jól látszik, hogy a WinBinder illesztési része két rétegen van megvalósítva. Az egyik a Windows API hívásokat egyszerűsíti le, a másik ezeket illeszti egy programozási nyelvhez - ezesetben a PHP-hez. Azért fogalmazhatok ilyen szabadon, mert Rubem úgy gondolja, hogy a két rétegű szerkezet lehetővé fogja tenni, hogy más nyelvekhez is illeszthető legyen a Windows API furfangjait elfedő réteg. De ugyanezt a másik irányból is elmondhatjuk, azaz a különválasztott nyelvi és operációs rendszer illesztő azt is lehetővé teszi, hogy másik operációs rendszerhez igazítsák a WinBindert. A környezethez hozzátartozik egy PHP-ben megvalósított kódkönyvtár is.
Az, hogy más nyelvhez vagy operációs rendszerhez illesztik-e a WinBindert, az jó kérdés, egyelőre nem megválaszolható. Az viszont biztos, hogy egy óriási újítást kaptunk ismét, mely tovább nyújtja a PHP lehetőségeit. Egy olyan projektet ismerhetünk meg, mely még sok meglepetést tartogathat: tartalmaz például beépített adatbázis absztrakciós függvényeket is.
Fontos megjegyezni, hogy a WinBinder egyelőre még nagyon kezdeti állapotban van, a Windows szolgáltatás támogatási lista szerint sok kényelmi elemet még nem támogat. Azonban ha azt nézzük, hogy már most használható PHP 4.3.8 és PHP 5.0.1-es változatokkal, egy "Helló világ!" alkalmazás elkészítése pedig az alábbi három sort igényli, akkor érzékelhető, hogy egy várhatóan jól alkalmazható rendszert kapunk.
■ A PHP-GTK ugyan keresztplatformos fejlesztést tesz lehetővé, Windows felhasználók számára felülete mégsem barátságos, hiszen nem a natív felületi elemeket használja. Ráadásul a fejlesztőknek is meggyűlhet vele a bajuk, hiszen összetett eseménykezelő rendszere és objektum-orientált felülete elsőre nem könnyen érthető.
Nemcsak ezeket a problémákat próbálta megoldani Rubem Pechansky, hanem még többet is. Megvizsgálta a Windows rendszerekre elérhető programozási felületeket, és azt tapasztalta, hogy egyik sem nyújtja az egyszerű programozhatóság és a végfelhasználóbarátság kellő kombinációját. Ezért úgy döntött, hogy elkészíti a WinBinder nevű nyílt forráskódú termékét, ami több izgalmas eredményre is vezetett.
Elsődleges célja, hogy a Windows programozási felületéhez illessze a PHP-t, egyszerű függvény orientált megoldásokat is biztosítva az objektumok használata mellett. Így mindenki megválaszthatja a saját stílusának megfelelő megközelítést. A WinBinder segítségével készült programok nem igényelnek telepítést a felhasználó rendszerén, a PHP minden kiterjesztésével együttműködnek, és ráadásul teljesen Windows alkalmazás kinézetet kapnak.
Egy WinBinder segítségével készült program
Olyannyira összeépülnek a WinBinder segítségével készült programok a Windows rendszerrel, hogy RC (erőforrás) állományokat is használhatunk, így a programunk felületét előkészíthetjük a Microsoft valamelyik vizuális szerkesztőjében is, míg a tényleges viselkedést már PHP-ben valósíthatjuk meg.
A WinBinder azonban nem eszetlen kódolás eredményeképpen született meg, a tervező szeme előtt szélesebb célok lebegtek. Íme a megvalósítás elemeit szemléltető ábra:
A WinBinder architektúrája
Az ábrán jól látszik, hogy a WinBinder illesztési része két rétegen van megvalósítva. Az egyik a Windows API hívásokat egyszerűsíti le, a másik ezeket illeszti egy programozási nyelvhez - ezesetben a PHP-hez. Azért fogalmazhatok ilyen szabadon, mert Rubem úgy gondolja, hogy a két rétegű szerkezet lehetővé fogja tenni, hogy más nyelvekhez is illeszthető legyen a Windows API furfangjait elfedő réteg. De ugyanezt a másik irányból is elmondhatjuk, azaz a különválasztott nyelvi és operációs rendszer illesztő azt is lehetővé teszi, hogy másik operációs rendszerhez igazítsák a WinBindert. A környezethez hozzátartozik egy PHP-ben megvalósított kódkönyvtár is.
Az, hogy más nyelvhez vagy operációs rendszerhez illesztik-e a WinBindert, az jó kérdés, egyelőre nem megválaszolható. Az viszont biztos, hogy egy óriási újítást kaptunk ismét, mely tovább nyújtja a PHP lehetőségeit. Egy olyan projektet ismerhetünk meg, mely még sok meglepetést tartogathat: tartalmaz például beépített adatbázis absztrakciós függvényeket is.
Fontos megjegyezni, hogy a WinBinder egyelőre még nagyon kezdeti állapotban van, a Windows szolgáltatás támogatási lista szerint sok kényelmi elemet még nem támogat. Azonban ha azt nézzük, hogy már most használható PHP 4.3.8 és PHP 5.0.1-es változatokkal, egy "Helló világ!" alkalmazás elkészítése pedig az alábbi három sort igényli, akkor érzékelhető, hogy egy várhatóan jól alkalmazható rendszert kapunk.
<?php
// WinBinder példa: Windows program három sorban
include("../../php/inc/winbinder.php"); // A WinBinder PHP könyvtár betöltése
wb_create_window(NULL, PopupWindow, "Hello world!", 480, 320); // Az alkalmazás ablak létrehozása
wb_main_loop(); // Programindítás
?>
Hasonló eszközök
Annyiban nyilván különbség van közöttük, hogy ezek -- esetleg már melévő -- PHP szkriptek önálló futtatására alkalmasak, és nem használnak Windowsos API-t, persze ez abban az esetben nagy előny lehet, ha egy online anyagot gyorsan es egyszerűen szeretnénk offline publikálni.
Pál_úr