PHP se dá kromě tvorby webu a shellových skriptů použít i k vytváření samstatných aplikací - včetně grafického rozhraní. Klíčem k tomu je PHPGTK.
21.1.2005 15:00 | Petr Zajíc | přečteno 41254×
Ačkoli to mnoho lidí vůbec neví, dá se PHP kromě tvorby webových
stránek (a kromě použití jako shellový interpreter) použít rovněž jako
obecný jazyk pro tvorbu samostatných aplikací, a to dokonce aplikací s
grafickým rozhraním. V tomto a následujícím díle si trochu ukážeme, jak
na to.
Samotné PHP nemá žádné prostředky pro tvorbu GUI (graphic user
interface, grafické uživatelské rozhraní). Tím mám na mysli prostředky
pro tvorbu oken s tlačítky, rozevíracími seznamy, zaškrtávači,
přepínači a tak dále. Existují nicméně samostatně napsané programy,
jejichž úkolem je - zjednodušeně řečeno - vytvářet prvky grafického
uživatelského rozhraní. Takže, kdyby se PHP na některý takový program
(často se nazývá toolkit) vhodně napojilo, mohla by vzniknout zajímavá
kombinace, že? Zejména, kdyby takový toolkit byl dostupný pod nějakou
symatickou licencí a kdyby fungoval pod více operačními systémy.
Tvůrci dnes již velmi populárního programu pro manipulaci s obrázky
GIMP (na Linuxsoftu máme mimochodem o GIMPu seriál) přesně takový toolkit
kdysi potřebovali. Takže vznikl GTK+,
neboli "The Gimp Toolkit" - nezávislý balíček pro tvorbu grafického
uživatelského rozhraní. Šířen je pod licencí GNU LGPL, čili patří mezi
svobodný software. Software je to velmi používaný, GTK+ je například
základem prostředí GNOME.
A teď to nejlepší - GTK+ funguje pod Windows i pod Linuxem a
existuje projekt spojující PHP a GTK+! Takže pomocí PHP můžeme vytvářet
aplikace s grafickým rozhraním, aniž bychom se museli zabývat
"nízkoúrovňovým" programováním samotného rozhraní. Projekt, který PHP a
GTK integruje se nazývá PHPGTK a má pochopitlně svoje internetové stránky. Pojďme se krátce podívat na
to, jak takovou věc vůbec zprovoznit:
Windows
PHPGTK je potřeba stáhnout a rozbalit. Soubor README.txt popisuje, kam se jednotlivé složky mají překopírovat (to uděláte ručně). Část archivu se musí dostat do složky, kde máte nainstalované PHP a část do systémové složky WINDOWS. Je to poměrně dobře dokumentované. Instalací si můžete přepsat soubor php.ini (což osobně nepovažuji za příliš dobrý nápad), nebo si můžete sekci, týkající se PHP do vlastního php.ini překopírovat (mnohem lepší). Distribuce obsahuje rovněž příklady, které si můžete spustit a vyzkoušet. GTK+ aplikace se spouštějí pomocí souboru php_win.exe, takže můžete naspat něco ve smyslu:
c:\php\php_win
D:\pokus\gtk\gtk.php
a měl by se vám objevit požadovaný příklad.
LINUX
Ověřte si, zda máte k dispozici GTK. Způsob, jakým to provedete bude záležet na možnostech konkrétní distribuce, pro Fedoru Core můžete například použít něco ve smyslu:
yum search gtk | grep
installed
Dále si ověřte, zda máte nainstalováno PHP 4.3.4 nebo novější. Pokud jste četli předchozí díl seriálu, asi pro Vás nebude překvapením, že to z terminálu většinou můžete provést pomocí příkazu:
php -v
Stáhněte si nejnovější verzi ze stránek gtk.php.net. Například v době psaní tohoto článku to bylo takto:
wget
http://gtk.php.net/do_download.php?download_file=php-gtk-1.0.1.tar.gz
Směle to rozbalte a pusťte se do kompilace pomocí:
./buildconf
./configure
make
make install
Hotovo! Celý proces je poměrně dobře zdokumentován na stránkách
projektu, takže byste se v případě problémů neměli ztratit.
Především, kompletní popis již samotné filozofie použití PHP-GTK je silně nad rámec tohoto článku, takže se omezíme jen na to opravdu nejdůležitější. Klasický začátečnický příklad "Hello world" byste pomocí PHP-GTK napsali nějak takto:
<?php
if (!extension_loaded('gtk')) {
dl( 'php_gtk.' . PHP_SHLIB_SUFFIX);
}
// při zavření okna
function destroy()
{
Gtk::main_quit();
}
// při kliknutí na tlačítko
function hello()
{
global $window;
$window->destroy();
}
// Nadefinujeme si okno
$window =
&new GtkWindow();
$window->set_border_width(10);
$window->connect('destroy', 'destroy');
// a čudlíček...
$button =
&new GtkButton('Hello World!');
$button->connect('clicked', 'hello');
//který do okna přidáme
$window->add($button);
// zobrazíme to ...
$window->show_all();
// a jedeme
Gtk::main();
?>
Dokážu si představit, že jste z toho dost vyjukaní, zejména pokud
jste nikdy nepracovali s jazyky ovládajícími grafické uživatelské
rozhraní (jako je C++, Java a podobně). Proto si příště tento příklad
trochu hlouběji rozebereme. Abych ale prozradil alespoň něco: tento
přístup využívá objekty; už jsme o nich mluvili v 19. a 20. díle
našeho seriálu. Objekty mohou vzájemně souviset (takže například
tlačítko souvisí s oknem, na němž je zobrazeno). Ale víc už
neprozradím, sledujte příští díl seriálu.
Mimochodem, docela by mě zajímalo, jestli někdo z čtenářů PHPGTK používá a k čemu. Podělte se s námi v diskusi!