20 juli, 2006

Vad är PHP-GTK2

Förord
De flesta vet väl vad PHP är för nåt - ett serverbaserat skriptspråk som används för att skapa dynamiska hemsidor. Nu har det även släppts en annan variant av PHP där man kan skapa körbara program - PHP-GTK2!


Introduktion
I den här artikeln ska jag introducera er för PHP-GTK2 - en utbyggnad för programmeringsspråket PHP som implementerar GTK+ (Gimp Tool Kit) bibiloteket. Detta tillhandahåller ett Objekt Orienterat (OO) gränssnitt för de flesta klasser och funktioner inom GTK+, som underlättar skapandet av klient-side och multi-platform (Unix, Linux, Solaris, Windows etc) program.

Nu kan man alltså inte bara använda PHP till dynamiska hemsidor - man kan även skriva program som fungerar på de flesta operativsystem utan några större ändringar i koden.

Jag ska bara gå igenom några av de viktigaste punkterna som berör PHP-GTK2 så att ni kan komma igång lite enklare. Jag kommer också hålla mig till Windows platformen i den här artikeln.


Nyheter och likheter
I PHP-GTK2 kan man använda nästan alla funktioner och klasser som finns tillgängliga i PHP, så om du har en dynamisk hemsida som kontaktar exv. en MySQL databas, kan du åstadkomma ett program som gör samma sak väldigt enkelt.

Exempel
Utdrag från: Dynamisk hemsida:
$dbh = mysql_connect('localhost', 'username', 'password') or die(mysql_error());
...
mysql_close($dbh);


Utdrag från: PHP-GTK2 applikation:
$dbh = mysql_connect('localhost', 'username', 'password') or die(mysql_error());
...
mysql_close($dbh);


Det enda man måste göra är att modfiera eller justera koden så att den passar ihop med din PHP-GTK2 applikation. I slutet av artikeln tänker jag visa några exempel på hur man skriver enkla PHP-GTK2 program.

En positiv egenskap hos PHP-GTK2 är att det använder PHP 5.1 och 5.2 i skrivande stund. Det är den version av PHP som har bäst stöd för Objekt Orienterad Programmering (OOP). Man bör lära sig OOP om man vill bli en seriös programmerare :).

En dålig egenskap hos PHP-GTK2 är att koden inte går att kompilera till maskinkod (den kod som processorn kan förstå), eller också kallat EXE-filer som de flesta av er borde känna igen. Det finns i och för sig tredjeparts program som kan kompilera PHP-GTK kod, men än så länge har de inte stöd för PHP-GTK2. Detta betyder i nuläget att om ni väljer att distribuera era program, så kan vem som helst läsa källkoden och själv göra ändringar i den.

Tips!
Det finns ett program vid namn "Zend Encoder" som "kodar" om din källkod till svårförstådd text. Det kostar pengar och om ni vill veta hur det fungerar får ni vända er till källorna i slutet av artikeln.


En IDE för att skapa PHP-GTK2 program
Först ska jag tala om vad en IDE är? En IDE (Intergrated Development Environment) är ett program som typ Microsoft Visual Studio som underlättar kodning av program oerhört. En IDE brukar ha en inbyggd hjälp med funktioner, klasser, konstanter med mera, och en inbyggd dokumentation för det programmeringsspråk den är till hjälp för.

För PHP-GTK2 finns en IDE vid namn Glade (v2.12.1-rc1 i skrivande stund), men exakt hur man får den att fungera kan jag inte förklara i nuläget. Jag får uppdatera artikeln vid ett senare tillfälle och lägga till en text om hur man gör. Försök hitta information bland artikelns källor så länge.

IDE:n fungerar som så att man kan "rita" knappar och andra objekt i ett fönster som representerar den slutliga applikationen. Då skapas kod "on-the-fly" så att man själv slipper skriva kod som exv. skapar ett nytt fönster: $wnd = new GtkWindow().

En IDE brukar också ha "syntax highlightning", vilket betyder att all kod färgläggs i olika färger. T.ex. strängar blir röda, kommentarer blir orangea, funktioner blir svarta, nyckelord blir blå etc. Då är det mycket enklare att hålla ordning och reda på sin kod.


Skaffa och Installera PHP-GTK2
Om ni använder Windows och känner att ni vill testa på PHP-GTK2, kan ni navigera till följande sida gnope.org och ladda ner (i skrivande stund) "Release 1.5.1" i sektionen "Windows Downloads". Det paketet har allt ni behöver för att komma igång. I alla fall för tillfället!

Nu går jag igenom steg-för-steg hur man gör för att få PHP-GTK2 att fungera.
Jag använder Windows XP Professional SP2!
  1. Ladda ner Gnope 1.5.1 som innehåller
    • PHP 5.1
    • gtk2 (Win32) module
    • Gnope Apprunner
    • Gnope PEAR Installer
  2. Kör filen "GnopeSetup-1.5.1" som ni precis laddade ner
  3. Tryck på "Next" och "I Agree"
  4. Kryssa i alla rutor du ser i fönstret
  5. Tryck på "Next"
  6. Låt det stå "C:\PHP-GTK2" så slipper vi krångla till det, men ni kan ju alltid ändra om ni vill.
  7. Tryck på "Install" och när en ruta poppar upp och ställer frågan: "Change the environment for all users..." svarar ni "Ja".
  8. När installationen är klar klickar ni på "Next" och sedan "Finish".
Efter att ni klickat på "Finish" borde programmet "PHP-GTK2 Applications" starta upp (om ni valt det förstås). I fönstret klickar ni på "Game_Snake" för att testa ett litet Snake spel. Om det fungerar vet ni nu att er PHP-GTK2 installation fungerar.

Pröva med att trycka på någon av piltangeterna på ert tangentbord i Snake, så borde ni se att en mask börjar röra på sig. Uppgiften är att ta så många äpplen som möjligt, men det vet ni väl redan!

PHP-GTK2 fungerar nu som det ska (om det inte uppstått några problem för er), så stäng av Snake och stäng också programmet "PHP-GTK2 Applications".

Följande steg följer ni bara om ni vill testa ett simpelt 'Hello World'-program:
  1. Gå till "Mina dokument"
  2. Skapa en ny mapp vid namn "PHP-GTK2 Projekt"
  3. I den mappen skapar ni en mapp vid namn "hello"
  4. Följ nu instruktionerna för hur man skapar det 'Hello World'-program som finns i slutet av artikeln tillsammans med alla exempel.
  5. Om ni gjort allt rätt borde ni nu ha en fil vid namn "hello.phpw" i mappen "hello" som ni precis skapat.
  6. Innan ni kör ert nya program ska vi skapa en så kallad batch-fil, som vi kommer använda för att samla upp eventuella felmeddelanden. Skapa den på samma sätt som ni skapade filen "hello.phpw", fast nu döper ni den till "debug.bat" och matar in följande data i den:

    debug.bat
    @echo off
    php hello.phpw
    pause
    exit


  7. Nu kan ni testköra ert nya program genom att dubbelklicka på "debug". Om ert program spottar ut en massa felmeddelanden kommer ni kunna se dem i den svarta rutan som poppat upp.
  8. Programmet visar texten "Hello World!" om allt fungerar, så nu kan ni stänga av det genom att trycka på krysset uppe i högra hörnet.
  9. Markera nu den svarta rutan och tryck på en valfri tangent för att få den att försvinna.
Exempelfilen associerad med det vi precis gått igenom heter "hello.zip" och skapar alla filer och mappar som behövs automatiskt.


Exempelfiler
Det finns inga att ladda ner


Dokumentation
Den vetgirige kan besöka gtk.php.net och lära sig allt på egen hand. Ta också gärna del av dokumentationen, för om det är något ni undrar över om PHP-GTK2 så hittar ni det nästan garanterat där. Annars kan ni alltid avända wiki:n.

Om ni vill testa ett litet program får ni gärna använda ett i slutet av artikeln, eller så kan ni använda ett enkelt "Hello World!" program från den officiella hemsidan gtk.php.net. En modifierad version av det programmet hittar du i slutet av artikeln.


Kodexempel
Hello World:
<?php
if (!class_exists('gtk')) {
die("Please load the php-gtk2 module in your php.ini\r\n");
}
$wnd = new GtkWindow();
$wnd->set_title('Hello world applikation'); // Titel

// Koppla en signal som avslutar PHP-GTK2 när man avslutar programmet
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));

// Skapa en simpel text
$lblHello = new GtkLabel('Hello World!'); // Skapa ny widget

// Lägg till texten till fönstret (objektet $wnd)
$wnd->add($lblHello);

// Visa alla så kallade widgets (manicker)
$wnd->show_all();

// Starta programmets huvudloop
Gtk::main();
?>


Kopiera koden till ett nytt textdokument (*.txt) i anteckningar eller er favoriteditor och spara det som "hello.phpw". Dubbelklicka på filen och det borde startas ett program med texten "Hello World!" inuti.

I nästa exempel ska jag visa hur ni skapar ett PHP-GTK2 program som ansluter till en MySQL databas. Observera att det bara fungerar om ni har tillgång till en installerad MySQL server på er dator, eller om ni har ett konto på exv. nåt webbhotell någonstans. Om ni har tillgång till en MySQL databas måste ni ladda in MySQL i PHP-GTK2 via ett "tillägg" (eng. extension) innan ni kan få det att fungera. Det kanske jag beskriver i en framtida artikel!
Det är ingen idé att ni testar om ni inte har lärt er MySQL än, men det kan vara lärorikt att ta del av felmeddelandena.

Ni kommer få följande felmeddelande om ni inte har konfigurerat MySQL korrekt:
Fatal error: Call to undefined function mysql_connect() in ...

MySQL Test PHP-GTK2:
<?php
if (!class_exists('gtk')) {
die("Please load the php-gtk2 module in your php.ini\r\n");
}
$wnd = new GtkWindow();
$wnd->set_title('MySQL applikation'); // Titel

// Koppla en signal som avslutar PHP-GTK2 när man avslutar programmet
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));


$dbh = mysql_connect('localhost', 'username', 'password') or die('Kunde inte ansluta till MySQl :: '. mysql_error());
// Gör inget!
mysql_close($dbh);

// Hit kommer vi om vi lyckades!!!
$lblHello = new GtkLabel('Vi lyckades ansluta till en MySQL-databas!'); // Skapa ny widget

// Lägg till texten till fönstret (objektet $wnd)
$wnd->add($lblHello);

// Visa alla så kallade widgets (manicker)
$wnd->show_all();

// Starta programmets huvudloop
Gtk::main();
?>



Spara det precis som ni gjorde i förra exemplet - i formatet *.phpw.
Jämför koden för PHP-GTK med följande exempel som syftar på en dynamisk hemsida i PHP

MySQL Test - Dynamisk Hemsida:
<html>
<head></head>
<body>
<?php
$dbh = mysql_connect('localhost', 'username', 'password') or die('Kan inte ansluta till MySQL :: '. mysql_error());
echo '<p>Vi lyckades ansluta till MySQL!</p>';
mysql_close($dbh);
?>
</body>
</html>

Det skiljer inte mycket, eller hur?
mysql_connect() är bara en av många funktioner i PHP som går att använda tillsammans med PHP-GTK2. Testa till exempel funktionen date('Y-m-d H:i:s').

Alla ni som vill lära er mera om PHP-GTK2 kan gå till gtk.php.net och följa alla instruktioner och exempel.


Hjälp
Om ni behöver hjälp eller får problem vid något som rör det som beskrivits i artikeln, får ni kontakta de som är experter på området. Ställ en fråga i ett forum eller nåt!

Kontakta mig inte och be om hjälp förutom om ni känner mig. Då hjälper jag ju er såklart.


Källor
http://gtk.php.net
www.gnope.org
www.zend.com
www.php.net
http://gladewin32.sourceforge.net Information om Glade
http://skylane.t35.com/blog/download

1 kommentar:

Gustav sa...

En bra artikel tycker jag. Gillar också programmera PHP och detta verkar intressant.

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.