Weiter Zurück [Inhalt] Online Suche im Handbuch

39.12 Wie verwende ich Funktionen und Bibliotheken ?

Eines der größten Vorteile von PHP ist das riesige Archiv von Unterprogrammen, Funktionen und Routinen, die fast alles abdecken, was man braucht oder gebrauchen könnte. Die Kunst ist es, das Rad hierbei nicht selber zu erfinden, sondern auf bewährte Programmteile von anderen Programmierern zurückzugreifen.

Operativer, blinder Aktivismus kann einen bei der Entwicklung im Vergleich um Tage zurückwerfen.

Auf dem Server http://www.php3.net findet man Bibliotheken zur Einbindung von Datenbanken, Cursor-Bibliotheken u.s.w. Bisher ist nicht weiter aufgefallen, daß z.B. der Befehl echo auch nur eine Funktion aus einer Bibliothek ist, nämlich der internen. Dieser gehört zu den elementaren Funktionen. Was uns jedoch mehr interessieren sollte, sind die zusammengesetzten Funktionen.

Im nächsten Abschnitt wird z.B. die Funktion isset($name) verwendet. Davor steht eine if Abfrage. Daraus kann man entnehmen, daß die Funktion isset() als Ergebnis entweder true oder false an die if Abfrage zurückliefert. Der Parameter, der ihr dabei übergeben wird, ist eine Stringvariable. Ist der String leer, so wird false zurückgegeben, falls der String gesetzt ist, wird true zurückgegeben. Allgemein kann man also die Funktion isset so beschreiben:


int isset(string)  

Der Ausdruck int bezeichnet eine Zahl, oder true oder false. Intern werden die Boolschen Operatoren (true, false) als 1 oder 0 dargestellt, daher ist int korrekt.

Sie sollten sich an diese Schreibweise schnell gewöhnen, da fast alle Dokumentationen zu Routinen so verfaßt sind. Wer die Schreibweise nicht versteht, der kann auch nicht die Routinen fremder Programmierer in seine eigenen Programme einbauen.

Schauen wir uns kurz eine selbstgeschriebene Funktion an:


function funktion ($arg_1, $arg_2, ..., $arg_n) {
    echo "Beispielfunktion.\n";
    return $rueckgabewert;
}

Diese Funktion benötigt Übergabewerte als String und gibt einen String zurück, ist also ähnlich der Funktion isset, nur der Rückgabewert ist diesmal ein String.

In den folgenden Unterkapiteln werden Funktionen verwendet, die Datenbanken öffen, Daten auslesen, und die Datenbank schließen. Schauen wir uns also einmal auf http://www.php3.net/manual/ref.mysql.php3, dem Handbuch von PHP3 um. Hier steht:


int mysql_connect(string [hostname [:port] [:/path/to/socket] ] , string
[username] , string [password] );

Die Ähnlichkeit mit der obigen Funktion isset ist verblüffend. Man kann also z.B. auch schreiben:

<?php

$id = mysql_connect("localhost", "nobody", "");

if(!$id) {
    echo "Fehler beim öffnen der Datenbank\n";
    exit;
}

Überlegen Sie sich, wie Sie z.B. die Funktion mysql_connect() für andere Programmierer dokumentieren würden. Vergleichen Sie einfach mal Ihre Idee mit denen des der Programmierer der Routine im PHP3 Handbuch im Internet.

Wir haben nun Funktionen kennengelernt, die recht einfach zu verstehen sind.

Im Folgenden werden nun Klassen vorgestellt, die einfach nutzbare Routinen zur Verfügung stellen, sofern man einmal die Syntax verstanden hat. Diese Klassen erinnern ein wenig an C++ Containerklassen, sind aber sehr einfach zu nutzen, da einige in C++ überhaupt nicht verständliche Regeln auch nicht in PHP 3 übernommen wurden, z.B. Vererbungen, mehrfache Vererbungen, u.s.w.

PHP3 Klassen sind viel einfacher zu nutzen. Hier ein Beispiel:


class datenbank_funktionen {
    function such_was () { 
        echo "Suche in Datenbank."; 
    }
}

$neue_funktion = new datenbank_funktionen;
$neue_funktion -> such_was ();

Autsch ! Eine ungewohnte schreibweise ? Die Klasse datenbank_funktionen beinhaltet eine oder mehrere nützliche Unterroutinen (hier nur eine) einer Klasse datenbank_funktionen. Die Unterroutine heißt hier: such_was.

Es gibt tausende Programmierer, die unter PHP 3 tolle Routinen, ganze Datenbankinterfaces für SQL-Datenbanken geschrieben haben, und diese nun als Klasse der Allgemeinheit kostenlos zur Verfügung stellen.

Mit diesen Klassen läßt sich in mit nur einer einzigen Zeile eine SQL-Datenbank, z.B. MySQL ansprechen (wie oben gesehen). Die Kunst ist es, die Dokumentationen richtig zu lesen, und die Klassen richtig in PHP 3 anzusprechen. Alles andere geht dann wie von Geisterhand.

In den Zeilen nach class wurde eine Funktion definiert. Danach folgte ein Aufruf $neue_funktion = new .....

Dieses nennt sich Instanz. Damit aktiviert man quasi diese Funktion, damit der PHP 3 Interpreter etwas Speicher anfordern und die Funktionen von der Festplatte lädt.

Danach folgt eine recht ungewöhnliche Syntax (zumindest für BASIC Programmierer), die völlig Zeigern auf Funktionen der Programmiersprache C ähnelt. Genau das ist es auch in PHP 3. Ein Zeiger auf eine Funktion in einer Klasse. Innerhalb der Klasse können Funktionen auch andere Funktionen aufrufen. Hierzu muß die Klasse auf eine Funktion von sich selber zeigen. Dies kann man mit dem Zeiger auf die eigene Klasse erreichen. Dann würde die Funktion so heißen: this->such_was();. this ist also die Klasse selber.

Wenn man das nun behalten und verstanden hat, dann kann mit der Einbindung anderer Klassen nicht mehr viel schieflaufen, zumal der Rest der Programmiersprache PHP 3 doch sehr einfachem BASIC ähnelt. Aus diesem Grunde existiert auch ein Konverter von Microsoft Visual Basic, genauer gesagt den Active Server Pages ( ASP ) nach PHP 3.0 .

Wunderhübsch, da man nun neben dem kostenlosen Zugriff auf PHP 3.0 Archive auch noch alle ASP-Scripte einfach nach PHP konvertieren kann. Wie gesagt, PHP ist nicht ohne Absicht so konzipiert worden und bereits bei 1.2 Millionen WWW-Servern im Internet im Einsatz.

Den Konverter findet man übrigens hier: http://home.i1.net/~naken/asp2php/. Er läuft ausschließlich nur auf billigen, absturzsicheren Betriebssystemen, z.B. LINUX mit GTK Oberfläche.

Ebenfalls hier findet man einen Export-Filter der ACCESS Tabellenstruktur nach MySQL. Mit diesem Script lassen sich zur Beschleunigung von ACCESS durch MySQL die Tabellenstukturen einfach exportieren.

So nun für diejenigen, die es noch nicht erwarten können, in Klassenbibliotheken schon einmal hineinzuschnuppern, hier ein Tip: http://phplib.shonline.de/index.php3. Es werden aber noch viele Beispiele folgen, die auch ohne diese Klassen auskommen. Wer aber höchst ansprüchsvolle Internet-Sites entwickeln möchte, der muß sich diese Adresse unbedingt merken....


Weiter Zurück [Inhalt] Online Suche im Handbuch