PHP-GTK
Školení, která pořádám
Jak asi víte, v PHP se kromě webových aplikací a skriptů pro příkazovou řádku dají pomocí PHP-GTK vytvářet i desktopové aplikace. Většina článků, které jsem viděl, se omezuje na návod k instalaci, příklad Hello World, v lepším případě potom na jednoduché rozhraní k databázi. V češtině vyšel seriál, který je sice už 4 roky starý, ale pro účely prvotního seznámení slouží myslím stále dobře. Mnohem čerstvější je dvojčlánek na Linuxsoftu, stejně jako většina ostatních ale spadá do kategorie „koukejte, funguje to“.
Mě zajímalo, jestli se PHP-GTK opravdu dá k něčemu použít. Verze 1.0.1 by měla poskytovat jistou záruku stability, byť pracuje s PHP 4 (nevhodným kvůli objektovému modelu) a starým GTK 1. Odhadem pár měsíců zbývá do uvedení PHP-GTK 2, na které se podle Andreiovy prezentace určitě vyplatí počkat – bude běžet pod PHP 5.1 a GTK 2 a v případě potřeby bude zpětně nekompatibilní.
V PHP-GTK se zjevně dají vytvořit poměrně rozsáhlé aplikace, mě zaujal například editor Tulip. Potěšující je, že díky widgetu GtkScintilla může být součástí aplikace i má oblíbená editační komponenta.
Podle mého názoru by se PHP-GTK dobře dalo využít v systémech pro zpracování objednávek. V běžném administrační rozhraní, do kterého se správce přihlašuje jednou za čas, něco tam jednorázově změní a zase odchází, se výhody PHP-GTK moc neprojeví, ale u systémů, které jsou používané takřka nepřetržitě, by výhody patrné být mohly:
- aplikace se nahraje jen jednou a od té doby běží v paměti
- uživatelské rozhraní může být mnohem propracovanější a některé funkce lze implementovat přímo u klienta (např. řazení dat ve výpisu)
- sítí se posílají jen data bez nutnosti neustále přenášet grafickou podobu rozhraní – to jde ale realizovat i u webových aplikací
Pokud si chcete PHP-GTK vyzkoušet, rozhodně vaší pozornosti doporučuji interface GladeXML, který vám podobně jako šablony umožňuje oddělit vlastní kód od vykreslování oken. Okno lze pomocí Glade nakreslit a vyexportovat do XML (nebo lze toto XML vytvořit ručně) a následně ho načíst do aplikace. U desktopových aplikací je toto oddělení myslím ještě důležitější než na webu, protože nudného kódu pro vykreslení oken bývá hodně.
Já osobně si počkám na PHP-GTK 2.
Diskuse
Ivan:
Co mě vede používat php na serveru? Podpora hostingů. Co mě ale vede používat zrovna php na klientovi?
Mě osobně k tomu vede to, že neexistuje jazyk, ve kterém bych se vyznal líp a ve kterém by se mi pracovalo pohodlněji.
Michal Molhanec:
jo, jo, shouhlas, kdyby mi pipni nabizelo python nebo ruby tak po php ani nevzdechnu :-) nicmene pokud clovek uz neco v php ma, tak muze byt velka vyhoda schopnost sdilet kod mezi www aplikaci a gui klientem, to muze dost velka vyhoda (akorat ta aplikace musi byt dobre navrzena, aby bylo co sdilet, coz vetsina php aplikaci nejspis nesplnuje, protoze to jsou bastly :-) ).
Pidas:
Zdravim nevite jestli jde php-gtk pod PHP 5.0.3?
Jsem to ted objevil a docela se mi to libi na hrani nainstaloval jsem to podle navodu a testoval nize uvedeny skript, ale hazi to pri spusteni chybu:
FATAL ERROR: Class 'GtkWindow' not found in a ten sposteny skript
diky za radu
<?php
if (!class_exists('gtk')){
strtoupper(substr(PHP_OS,0,3) == 'WIN')?dl('php_gtk.dll'):dl('php_gtk.so');
}
// 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();
?>
pif:
vypada to zajimave, az se budu nudit prozkoumam ;))
Techi:
No linky na instalaci tulip = 404
Bylo by fajn, kdyby existovalo prave vyvojovy prostredi napsany samo s sobe na styl netbeans
Prdlořeznictví Krkovička, n. p.:
Tak PHP-GTK 2 existuje od února 2008, verze 2.0.1 pak od 16.5.2008. Podle mě ten projekt balancuje ve stavu mezi životem a klinickou smrtí...
Diskuse je zrušena z důvodu spamu.