cvs: php-gtk-doc /manual/de/tutorials hello_world.xml helloadvanced.xml installation.xml
[email protected] ("Christian Weiske")
| Newsgroups | php.gtk.doc |
|---|---|
| Message-ID | <cvscweiske1160556659@cvsserver> |
cweiske Wed Oct 11 08:50:59 2006 UTC
Added files:
/php-gtk-doc/manual/de/tutorials hello_world.xml helloadvanced.xml
installation.xml
Log:
three German tutorials
cweiske-20061011085059.txt
(text/plain, 27 KB)
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/de/tutorials/hello_world.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/de/tutorials/hello_world.xml
+++ php-gtk-doc/manual/de/tutorials/hello_world.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.helloworld">
<title>Hallo Welt (Grundlage)</title>
<simpara>
Wenn Sie anfangen, eine Programmiersprache zu erlernen, ist das erste
Programme, das Sie schreiben ein 'Hallo Welt' Programm. Um uns
allen anderen anzupassen, wird die erste Übung in diesem Handbuch ein
'Hallo Welt' Programm sein!
</simpara>
<simpara>
Überall in den Übungen setzten wir ein angemessenes Wissen von PHP voraus.
Der Aufbau der Übungen verleiht dem Leser sowohl das Wissen, wie man PHP-GTK
benutzt, als auch das Wissen über die Technik im Hintergrund.
</simpara>
<simpara>
In dieser Übung erstellen wir ein einfaches Fenster, in dem der Text "Hallo Welt!"
enthalten sein wird.
</simpara>
<simpara>
Wir beginnen mit der Auflistung des Programms und erklären anschließend jede
Zeile des Programms, und geben einen Überblick zur Funktionsweise einer einfachen
PHP-GTK-Anwendung.
</simpara>
<example>
<title>Ein einfaches "Hallo Welt"-Beispiel</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloworld/helloworld.phpw" parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
<para>
Kopieren Sie nun den Quelltext in einen Texteditor und speichern sie ihn als
<filename>hello.phpw</filename>. Anschließend öffnen Sie eine Konsole und starten
das Skript durch <command>php hello.phpw</command>. Es erscheint ein Fenster mit
dem Titel "Hello world", das nichts außer dem Text
"Just wanted to say 'Hello world!'" enthält.
</para>
<example>
<title>Überprüfen, ob PHP-GTK vorhanden ist</title>
<programlisting role="php"><![CDATA[if (!class_exists('gtk')) {
die("Please load the php-gtk2 module in your php.ini\r\n");
}]]></programlisting>
</example>
<para>
Wir stellen sicher, dass PHP-GTK vorhanden ist, in dem wir überprüfen, ob
die Klasse <literal>gtk</literal> existiert. Im Gegensatz zu PHP 4 und PHP-GTK 1,
sollten Sie nicht versuchen das PHP-GTK Modul durch
<ulink url="http://www.php.net/dl">dl()</ulink> zu laden.
Dies wurde in PHP 5 verworfen, und sollte nicht in neu geschriebenem Code
verwendet werden. Alles, was wir tun können ist die Ausgabe einer Nachricht, dass
das Modul nicht vorhanden ist und vom Benutzer aktiviert werden soll.
</para>
<example>
<title>Ein Fenster erstellen</title>
<programlisting role="php"><![CDATA[$wnd = new GtkWindow();]]></programlisting>
</example>
<para>
Das Erstellen eines neuen <link linkend="gtk.gtkwindow">window</link> Widgets
ist genau so leicht, wie die Instanzierung eines neuen Objekts: der Variable
<literal>$wnd</literal> wird das neue Objekt zugewiesen. Falls Sie schon mit
PHP 4 und PHP-GTK 1 programmiert hatten, werden Sie das kaufmännische Und
<literal>&</literal> vor <literal>new</literal> vermissen. Dies war in
PHP 4 erforderlich, sollte aber nicht mehr in PHP 5 benutzt werden,
weil Referenzen automatisch erstellt werden.
</para>
<example>
<title>Setzen des Fensternamens</title>
<programlisting role="php"><![CDATA[$wnd->set_title('Hello world');]]></programlisting>
</example>
<simpara>
Um die Identifizierung des Fensters in der Fensterleiste leichter zu ermöglichen,
setzen wir einen Fensternamen:
Ein ganz einfacher Aufruf einer Objektmethode.
</simpara>
<example>
<title>Ein sauberes Beenden ermöglichen</title>
<programlisting role="php"><![CDATA[$wnd->connect_simple('destroy', array('gtk', 'main_quit'));]]></programlisting>
</example>
<para>
Dies ist der wirklich erste interessante Teil des Quelltexts: Das
<signalname class="GtkObject">destroy</signalname> Signal wird
an die statische <link linkend="gtk.method.main_quit">Gtk::main_quit</link>
Methode verbunden. Es sagt einfach zu GTK, dass es die main Schleife
verlassen soll, wenn das Fenster geschlossen/zerstört wird.
(Die Main-Schleife wird in eingen Abschnitten weiter unten erklärt.)
</para>
<example>
<title>Ein Label zur Darstellung des Texts erstellen</title>
<programlisting role="php"><![CDATA[$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");]]></programlisting>
</example>
<para>
Wie auch zuvor, erstellen wir ein neues Widget. Diesmal wollen wir einen
kleinen Text darstellen, und <classname>GtkLabel</classname> erweist sich
als perfekt für diese Aufgabe.
</para>
<example>
<title>Das Label zum Fenster hinzufügen</title>
<programlisting role="php"><![CDATA[$wnd->add($lblHello);]]></programlisting>
</example>
<simpara>
Jetzt sagen wir dem Fenster, dass das Label direkt hinzugefügt werden soll.
</simpara>
<example>
<title>Das Fenster sichtbar machen</title>
<programlisting role="php"><![CDATA[$wnd->show_all();]]></programlisting>
</example>
<para>
Bis jetzt sehen Sie nichts auf Ihrem Bildschirm. Um das Fenster
sichtbar zu machen, müssen Sie die <function class="GtkWidget">show</function>-
Methode aufrufen. Das macht das Fenster sichbar, aber nicht das Label - wir müssten
auch die <function class="GtkWidget">show</function>-Methode für das
Label aufrufen. Das ist sehr ungünstig, wenn Sie mehrere Widgets, zum
Beispiel Knöpfe, Checkboxen und andere im Fenster haben:
<function class="GtkWidget">show_all</function> übernimmt das Sichtbarmachen
des Fensters und aller Kindelemente.
</para>
<example>
<title>Starten der Hauptschleife</title>
<programlisting role="php"><![CDATA[Gtk::main();]]></programlisting>
</example>
<para>
Nachdem alles eingestellt wurden, müssen wir sicherstellen, dass das
Fenster offen bleibt und auf alle Benutzerinteraktionen reagiert.
Ein normales PHP Skript würde zu Ende sein und an dieser Stelle stoppen,
aber wir wollen es laufen lassen: Dazu muss die main Schleife gestartet
werden. Sie sorgt dafür, dass die Applikation ausgeführt wird und auf
Benutzerereignisse wartet. Wenn Ereignisse auftreten, leitet es sie
an die entsprechenden Callbacks.
</para>
<sect1 id="tutorials.helloworld.futherreading">
<title>Literaturhinweise</title>
<para>
Nachdem Sie nun Ihre erste PHP-GTK 2 Applikation erstellt haben, wollen
Sie vielleicht ein komplexeres Layout erstellen. Um das Grundlegende
zu lernen, schauen Sie sich die
<link linkend="tutorials.packing">Verschachtelungsübung</link> an.
</para>
</sect1>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/de/tutorials/helloadvanced.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/de/tutorials/helloadvanced.xml
+++ php-gtk-doc/manual/de/tutorials/helloadvanced.xml
<chapter id="tutorials.helloadvanced">
<!-- $Revision: 1.1 $ -->
<title>Hallo Welt (Fortgeschritten)</title>
<simpara>
Diese Übung behandelt einige fortgeschrittenere
Funktionalitäten als die erste Hallo Welt Übung.
Hier erstellen wir ein Loginfenster, in dem der
Benutzer seinen Benutzernamen und sein Passwort
eingeben kann. Wenn der Benutzer den Loginknopf
drückt, werden die Textfelder überprüft, und eine
Fehlermeldung wird angezeigt wenn der Benutzer
seinen Namen oder sein Passwort vergessen hat.
</simpara>
<para>
Hier ein Screenshot, wie das Programm aussieht, wenn
es fertig ist:
<graphic fileref="&directory.images;/tutorials/helloadvanced.png"/>
</para>
<para>
Zuerst erstellen wir ein Fenster, setzen den Fensternamen und sagen
der Hauptschleife, dass sie das beendet werden soll, wenn das Fenster
zerstört wird - Sie kennen das bereits aus der ersten Übung:
<informalexample>
<programlisting role="php"><![CDATA[
$wnd = new GtkWindow();
$wnd->set_title('Login');
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));
]]></programlisting>
</informalexample>
</para>
<para>
Die nächste Aufgabe ist das Erstellen aller Elemente, die wir
für diesen Dialog brauchen werden: Zuerst zwei Texteingabe
Felder für den Benutzernamen und das Passwort:
<informalexample>
<programlisting role="php"><![CDATA[
$txtUsername = new GtkEntry();
$txtPassword = new GtkEntry();
]]></programlisting>
</informalexample>
Anschließend wollen wir den Benutzer wissen lassen, welches
Textfeld für das Passwort und den Benutzernamen ist, deshalb
brauchen wir einige aussagekräftige Labels:
<informalexample>
<programlisting role="php"><![CDATA[
//The second parameter says that the underscore should be parsed as underline
$lblUsername = new GtkLabel('_Username', true);
$lblPassword = new GtkLabel('_Password', true);
]]></programlisting>
</informalexample>
Und zuletzt brauchen wir zwei Knöpfe: Einen für das Anmelden, und einen,
um den Vorgang abzubrechen:
<informalexample>
<programlisting role="php"><![CDATA[
$btnLogin = new GtkButton('_Login');
$btnCancel = new GtkButton('_Cancel');
]]></programlisting>
</informalexample>
Sie haben vielleicht gemerkt, dass der <classname>GtkLabel</classname>
Konstruktor einen zweiten Parameter übergeben bekommt, um festzulegen,
dass der Unterstrich <literal>_</literal> als Unterstreichung des nächsten
Zeichens gezeigt werden soll, aber das wird nicht im <classname>GtkButton</classname>
Konstruktor erledigt: Der Button-Konstruktor macht dies automatisch,
während der Label Konstruktor dies nicht tut. Dieses Verhalten
mag Ihnen seltsam erscheinen, aber die Wahrscheinlichkeit, dass Sie
ein "Mnemonic Label" auf einem Button haben möchten ist viel höher,
als dass sie das bei einem normalen Label wollen.
</para>
<para>
Nun müssen die Labels wissen, was für ein Widget aktiviert
werden muss, wenn sie über den Mnemonic aktiviert werden.
Dies wird auf folgende Weise gemacht:
<informalexample>
<programlisting role="php"><![CDATA[
$lblUsername->set_mnemonic_widget($txtUsername);
$lblPassword->set_mnemonic_widget($txtPassword);
]]></programlisting>
</informalexample>
Desweiteren, müssen wir festlegen, welche Aktion ausgeführt werden
sollen, wenn die Knöpfe gedrückt werden.
Der Abbrechen Knopf soll das Fenster zerstören (und somit die Applikation
beenden) und der Loginknopf soll die Textfelder auf Korrektheit überprüfen
und weitere Aktionen ausführen:
<informalexample>
<programlisting role="php"><![CDATA[
$btnCancel->connect_simple('clicked', array($wnd, 'destroy'));
$btnLogin ->connect_simple('clicked', 'login', $wnd, $txtUsername, $txtPassword);
]]></programlisting>
</informalexample>
Wir übergeben die drei Widgets <varname>$wnd</varname>,
<varname>$txtUsername</varname> und <varname>$txtPassword</varname>
als zusätzliche Parameter an die (noch zu definierende)
<literal>login</literal> Funktion, weil wir sie dort brauchen werden:
Um die Werte der Textfelder zu bekommen, und um das Fenster wenn alles
in Ordnung ist zu zerstören/verbergen.
</para>
<para>
Da wir jetzt alle Widgets, die wir brauchen, haben, werden sie dem
Fenster hinzugefügt. Da <classname>GtkWindow</classname> ein
binärer Container ist, kann es nur ein einzelnes Widget beihalten.
Deshalb brauchen wir einen Container, der mehrere Widgets beinhalten
kann und auch unsere Elemente schön anordnen kann.
Die Entscheidung fällt auf <classname>GtkTable</classname>, weil es
uns ermöglicht, die Labels in eine Spalte zu packen, und die
Eingabefelder in der nächsten Spalte:
<informalexample>
<programlisting role="php"><![CDATA[
$tbl = new GtkTable(3, 2);
$tbl->attach($lblCredit, 0, 2, 0, 1);
$tbl->attach($lblUsername, 0, 1, 1, 2);
$tbl->attach($txtUsername, 1, 2, 1, 2);
$tbl->attach($lblPassword, 0, 1, 2, 3);
$tbl->attach($txtPassword, 1, 2, 2, 3);
]]></programlisting>
</informalexample>
(Die <varname>$lblCredit</varname> Variable ist einfach ein Label mit
einer Nachricht). Die Buttons erhalten ihre eigene
<classname>GtkHButtonBox</classname>, weil diese Klasse es einem erlaubt,
mehrere Knöpfe auf einfache Weise ansprechend anzuordnen:
<informalexample>
<programlisting role="php"><![CDATA[
$bbox = new GtkHButtonBox();
$bbox->set_layout(Gtk::BUTTONBOX_EDGE);
$bbox->add($btnCancel);
$bbox->add($btnLogin);
]]></programlisting>
</informalexample>
</para>
<para>
Das Letzte am Layout ist das Hinzufügen der Tabelle und der Box
für die Knöpfe zum Fenster. Dies ist nicht direkt möglich, weil
<classname>GtkWindow</classname> ein <classname>GtkBin</classname>
ist und nur ein Widget beinhalten kann. Deshalb brauchen wir einen
anderen Container, diesmal eine <classname>GtkVBox</classname>:
<informalexample>
<programlisting role="php"><![CDATA[
$vbox = new GtkVBox();
$vbox->pack_start($tbl);
$vbox->pack_start($bbox);
]]></programlisting>
</informalexample>
Das war es, nun können wir das Fenster anzeigen:
<informalexample>
<programlisting role="php"><![CDATA[
$wnd->add($vbox);
$wnd->show_all();
Gtk::main();
]]></programlisting>
</informalexample>
</para>
<para>
Das Letze, was noch fehlt, ist die <literal>login</literal>funktion,
die aufgerufen wird, wenn the Benutzer den Loginknopf
drückt. Sie soll die Werte des Benutzername- und Passwortfeldes
überprüfen: Wenn Ihre Länge 0 ist (der Benutzer hat nichts eingegeben),
wird eine Fehlermeldung angezeigt. Wenn alles in Ordnung ist, wird
das Fenster zerstört und das Programm könnte mit dem Laden des
Hauptfensters fortfahren.
</para>
<para>
Das Erhalten des Textes aus den Widgets ist sehr einfach, wir
benutzten nur die
<function class="GtkEntry">get_text</function>-Methode
von <classname>GtkEntry</classname>:
<informalexample>
<programlisting role="php"><![CDATA[
$strUsername = $txtUsername->get_text();
$strPassword = $txtPassword->get_text();
]]></programlisting>
</informalexample>
Die Überprufung läuft über die normale php-<literal>strlen</literal>-Funktion.
Falls ein Fehler auftritt, wollen wir eine kleine Messagebox mit einer
kurzen Nachricht anzeigen.
<classname>GtkMessageDialog</classname> ist eignet sich hervorragend
dazu, da es automatisch die Symbole und Knöpfe erstellt (Ok, Ja/Nein):
<informalexample>
<programlisting role="php"><![CDATA[
$dialog = new GtkMessageDialog($wnd, Gtk::DIALOG_MODAL, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, $errors);
$dialog->set_markup("The following errors occured:\r\n<span foreground='red'>" . $errors . "</span>");
$dialog->run();
$dialog->destroy();
]]></programlisting>
</informalexample>
</para>
<para>
Zuletzt stellen Sie sicher, dass Sie die login Funktion vor(!) der main Schleife
einfügen und führen Sie es aus.
</para>
<example>
<title>Das ganze Programm</title>
<programlisting role="php">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="&directory.examples;/tutorials/helloadvanced/helloadvanced.phpw"
parse="text">
<xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
</xi:include>
</programlisting>
</example>
</chapter>
http://cvs.php.net/viewvc.cgi/php-gtk-doc/manual/de/tutorials/installation.xml?view=markup&rev=1.1
Index: php-gtk-doc/manual/de/tutorials/installation.xml
+++ php-gtk-doc/manual/de/tutorials/installation.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- $Revision: 1.1 $ -->
<chapter id="tutorials.installation">
<title>Installation von PHP-GTK 2</title>
<sect1 id="tutorials.installation.introduction">
<title>Einleitung</title>
<para>
PHP-GTK 2 is eine Erweiterung zu PHP und kann nur mit Version 5.1 oder
höher benutzt werden. Obwohl der häufigste Weg PHP-GTK2 zu installieren
das Kompilieren ist, kann sich dieser Vorgang als sehr schwierig auf
Windows erweisen; in diesem Falle werden die meisten Leute das offizielle
PHP-GTK 2 Binärpaket oder das Gnope-Installationsprogramm benutzen.
</para>
<para>
Wir werden den Installationprozess auf den drei meistbekannten
Betriebssystemen abdecken: Windows, Linux und Mac OS X.
Die Anweisungen für Linux sind auf den meisten Distributionen
anwendbar, die POSIX komatibel sind.
</para>
</sect1>
<sect1 id="tutorials.installation.windows">
<title>Installation unter Windows</title>
<sect2 id="tutorials.installation.windows.gnope">
<title>Benutzung von Gnope</title>
<para>
Gnope hat sich als die einfachste Art PHP-GTK 2 unter Windows zu
installieren bewährt. Gnope is ein voll ausgestattetes
PHP-GTK 2-Installationsprogramm, komplett mit PHP 5.1, GTK 2.6 und PEAR.
Einige einfache Mausklicks und Sie sind fertig!
</para>
<para>
Laden Sie einfach das Programm von <ulink url="&url.gnope;">gnope.org</ulink>
herunter und folgen Sie den Bildschirmanweisungen. Gnope hat auch einen
eigenen PEAR-kompatiblen Channel, in dem Sie PHP-GTK 2 Anwendungen,
zusätzlich zu offiziellen PEAR Paketen,
z.B. aus der <ulink url="&url.pear.gtk2;">Gtk2 Kategorie</ulink>,
herunterladen können.
</para>
</sect2>
<sect2 id="tutorials.installation.windows.manual">
<title>Manuelle Installation</title>
<para>
Ladenen Sie das Alpha-Binärpaket von PHP-GTK 2 für Windows von der
PHP-GTK 2 <ulink url="&url.phpgtk.download;">Downloadseite</ulink>.
Extrahieren Sie die Dateien in ein Verzeichnis Ihrer Wahl. Ein
Verzeichnis <literal>php-gtk</literal> wird erstellt und beinhaltet
den Paketinhalt.
</para>
<para>
Sie benötigen eine Kopie von <filename>php.exe</filename> (CLIversion) und
<filename>php5ts.dll</filename>, beide sind im Binärpaket von PHP 5 für
Windows enthalten, und legen Sie diese in das <filename>php-gtk</filename>
Verzeichnis ab. Falls sie es bevorzugen weitere Erweiterungen mit dieser
Kopie von <filename>php.exe</filename> zu benutzen, stellen Sie sicher, dass
Sie deren Binärdateien auch in diesem Verzeichnis ablegen.
</para>
<para>
<!-- FIXME: Do we need to do this? I doubt that this is necessary
-cweiske -->
Danach müssen Sie Ihre <literal>PATH</literal> Umgebung setzen, um
das <filename>gtk+2.6.9</filename> Verzeichnis für dieses Paket zugänglich
zu machen. Sie können auch die <literal>gtkpath.bat</literal> Batchdatei
für Sie die passende <literal>PATH</literal>-Variable für die derzeitige
Kommandozeilen Sitzung setzen lassen, indem Sie diese ausführen.
</para>
</sect2>
<sect2 id="tutorials.installation.windows.cvs">
<title>Kompilierung aus dem CVS</title>
<para>
Dies ist die letzte in Erwägung zu ziehende Methode PHP-GTK 2 unter
Windows zu installieren. Falls Sie immer noch dieses Vorhaben
durchsetzen wollen, bitte lesen Sie <filename>win32/README.win32.txt</filename>
im CVS.
</para>
</sect2>
</sect1>
<sect1 id="tutorials.installation.linux">
<title>Installation unter Linux</title>
<para>
Die beste Weg PHP-GTK 2 unter Linux zu installieren, ist es zu kompilieren.
Bisher sind keine Binärpakete oder Binärpakete für irgendwelche Distributionen
verfügbar, deshalb können Sie nicht Ihren Lieblingspaketmanager benutzen, um
PHP-GTK 2 zu installieren! Diese Anweisungen sollten für die meisten Linux
Distributionen funktionieren, als auch für andere POSIX-genormte Systeme.
</para>
<note>
Die hier aufgelisteten Vorgehensweisen funktionieren nach
Erfahrungsberichten nicht unter FreeBSD
</note>
<para>
Es gibt zwei Möglichkeiten, PHP-GTK 2 auf Linuxsystemen zu installieren.
Sie können entweder die bereits auf Ihrem Linux System
vorhandene PHP-Installation zu benutzen, oder eine seperate
PHP-Installation zu erstellen und diese nur für PHP-GTK 2 zu verwenden.
Die letztere ist die einfacherere Methode und wird Benutzern empfohlen,
die wenig oder gar keine Linuxkenntnisse haben.
In jedem Fall brauchen Sie eine installieretes Gtk+, Version 2.6 oder höher.
</para>
<sect2 id="tutorials.installation.linux.newphp">
<title>Installation von PHP-GTK 2 zusammen mit einer neuen PHP-Installation</title>
<para>
Folgen Sie einfach den Schritten, und alles sollte funktionieren!
Das erste was Sie brauchen, ist ein frischer Checkout von PHP.
Sie können entweder die <literal>5_1</literal> oder
<literal>5_2</literal> Branch verwenden, mit beiden
funktioniert es:
<programlisting role="bash"><![CDATA[
$ cvs -d :pserver:[email protected]:/repository login
$ cvs -d :pserver:[email protected]:/repository co -r PHP_5_2 php-src]]></programlisting>
Jetzt, müssen Sie sie kompilieren und installieren:
<programlisting role="bash"><![CDATA[
$ cd php-src
$ ./buildconf
$ ./configure --prefix=/opt/php5_2 --disable-cgi
$ make
$ su
$ make install
$ echo extension=php_gtk2.so >> /opt/php5_2/lib/php.ini
$ /opt/php5_2/bin/php-config --extension-dir | xargs echo 'extension_dir=' >> /opt/php5_2/lib/php.ini]]></programlisting>
</para>
<note>
<para>
Falls des aktuelle CVS von PHP nicht kompiliert,
verwenden Sie ein offizielles Paket von der
<ulink url="&url.php.download;">php Download Seite</ulink>,
oder einen <ulink url="&url.php.snapshots;">Schnappschuss</ulink>.
</para>
</note>
<para>
Lassen Sie uns jetzt PHP-GTK 2 auschecken und installieren:
<programlisting role="bash"><![CDATA[
$ cd ..
$ cvs -d :pserver:[email protected]:/repository co php-gtk
$ cd php-gtk
$ ./buildconf --with-phpize=/opt/php5_2/bin/phpize
$ ./configure --with-php-config=/opt/php5_2/bin/php-config
$ make
$ make install]]></programlisting>
</para>
<para>
Sie möchten vielleicht einen Link zu neuen php Programmdatei erstellen:
<programlisting role="bash"><![CDATA[
$ ln -s /opt/php5_2/bin/php /usr/bin/php-gtk]]></programlisting>
Das ist alles, Sie sind fertig!
</para>
</sect2>
<sect2 id="tutorials.installation.linux.existingphp">
<title>Eine vorhandene PHP-Installation verwenden</title>
<para>
Falls Sie sich dazu entschließen, PHP-GTK 2 zu Ihrer vorhanden PHP
Installation "hinzuzufügen", stellen sie sicher dass Ihrere PHP
Version mindestens 5.1 ist, mit aktiviertem CLI.
PHP-GTK 2 wird NICHT mit irgendeiner anderen Version von PHP funktionieren.
Sie können Ihre PHP Version prüfen, indem Sie <command>php -v</command>
in der Kommandozeile eintippen. Vergessen Sie nicht zu prüfen, dass das
Wort <literal>cli</literal> in der Ausgabe erscheint!
</para>
<para>
Holen Sie nun die aktuellen Quelltext aus dem CVS von PHP-GTK 2, oder laden Sie
den Alpha-Quelltext-Archiv herunter, wie auf der PHP-GTK 2
<ulink url="&url.phpgtk.download;">Downloadseite</ulink> erläutert wird.
<literal>cd</literal> in das geholte / extrahierte Verzeichnis, und
führen Sie folgendes aus:
<programlisting role="bash"><![CDATA[
$ ./buildconf
$ ./configure
$ make
$ make install]]></programlisting>
</para>
<para>
Dies müsste bei den meisten Leuten funktionieren.
Falls mehrere Installationen von PHP auf Ihrem System existieren oder Sie
PHP an irgendeinem exotischen Ort installiert haben, könnten Sie
einigen Problemen begegnen. Die meisten dieser Fälle können gelöst
werden, indem man den exakten Aufenthaltsort der <literal>phpize</literal>
und der <literal>php-config</literal> Programmdateien angibt:
<programlisting role="bash"><![CDATA[
$ ./buildconf --with-phpize=/path/to/phpize
$ ./configure --with-php-config=/path/to/php-config]]></programlisting>
</para>
</sect2>
<sect2 id="tutorials.installation.linux.testing">
<title>Testen der Installation</title>
<para>
Bevor Sie PHP-GTK 2 verwenden können, müssen Sie die Erweiterung
in Ihrer php.ini aktivieren. Fügen Sie einfach ein
<programlisting role="ini"><![CDATA[
extension=php_gtk2.so]]></programlisting>
unter allen anderen <literal>extension=</literal> Einstellungen hinzu.
</para>
<para>
Sie können testen, ob Ihre Installation erfolgreich war, indem
Sie folgendes ausführen:
<programlisting role="bash"><![CDATA[
$ php -m | grep php-gtk]]></programlisting>
Sie sollte eine einzelne Zeile sehen, in der
<literal>php-gtk</literal> steht.
</para>
<para>
Als nächsten können Sie die Demoanwendungen im <filename>demos</filename>
Verzeichnis der php-gtk Quelltexte ausprobieren, z.B.
<filename>demos/phpgtk2-demo.php</filename>.
</para>
</sect2>
</sect1>
<sect1 id="tutorials.installation.macosx">
<title>Installation unter Mac OS X</title>
<para>
Sie müssen sicherstellen, dass Sie die Apple Developer Tools, das BSD Subsystem,
und eine Installation von X haben, bevor Sie versuchen PHP-GTK 2 zu
installieren. Obwohl das BSD Subsystem standardmäßig unter Mac OS X
installiert ist, müssen Sie manuell die Developer Tools und den X-Server
auswählen. Obwohl Sie irgendeinen X-Server verwenden können, ist es am
einfachsten den zu benutzen, der von Apple standardmäßig im
Mac OS X Installer bereitgestellt wird.
</para>
<para>
Holen Sie die <ulink url="&url.macports;">MacPorts</ulink> (früher bekannt als
DarwinPorts) oder <ulink url="&url.fink;">Fink</ulink> und installieren
Sie es. Sie können entweder es dazu benutzen eine Version von X (wenn Sie sich
gegen Apple's standardmäßige Distribution entschlossen haben), und um Gtk+
selbst zu installieren. Sowohl Fink als auch MacPorts stellen Version 2.6 und
höher von Gtk+ zur Verfügung.
</para>
<para>
Nachdem Sie alles von oben an einem Ort haben, holen Sie die 5_2 Branch von
PHP, kompilieren und installieren Sie diese. Obwohl Sie sie überall hin
installieren dürfen, gilt <literal>/usr/local</literal> im Ganzen als eine
gute Wahl.
<programlisting role="bash"><![CDATA[
$ cvs -d :pserver:[email protected]:/repository co -r PHP_5_2 php-src
$ cd php-src
$ ./buildconf
$ ./configure --disable-cgi
$ make
$ sudo make install]]></programlisting>
</para>
<para>
Nun holen Sie den aktuellen PHP-GTK Code und kompilieren Sie diesen:
<programlisting role="bash"><![CDATA[
$ cd..
$ cvs -d :pserver:[email protected]:/repository co php-gtk
$ cd php-gtk
$ ./buildconf --with-phpize=/usr/local/bin/phpize
$ ./configure --with-php-config=/usr/local/bin/php-config \
--disable-libglade
$ make
$ sudo make install]]></programlisting>
</para>
<para>
Zum Schluss, kopieren Sie die <literal>php.ini-recommended</literal> Datei
nach <literal>/usr/local/lib/php.ini</literal> und ändern Sie den Wert von
<literal>extension_dir</literal> in das Verzeichnis, das
<literal>php_gtk2.so</literal> enthält. Dies ist normalerweise sowas wie:
<literal>/usr/local/lib/php/extensions/no-debug-non-zts-some-date</literal>.
Sie mögen vielleicht einen neuen symbloischen Link in <literal>/usr/bin</literal>
erstellen, der auf <literal>/usr/local/bin/php</literal> zeigt.
</para>
<para>
Nun fahren Sie weiter fort mit dem
<link linkend="tutorials.installation.linux.testing">Testen der Installation</link>.
</para>
</sect1>
</chapter>