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 Vergleichum Tage zurückwerfen. Aufdem Server http://www.php.net findet man Bibliotheken zur Einbindungvon Datenbanken, Cursor-Bibliotheken u.s.w. Bisher ist nichtweiter aufgefallen, daß z.B. der Befehl echo auchnur eine Funktion aus einer Bibliothek ist, nämlich derinternen. Dieser gehört zu den elementaren Funktionen. Wasuns jedoch mehr interessieren sollte, sind die zusammengesetztenFunktionen. Imnächsten Abschnitt wird z.B. die Funktion isset($name)verwendet. Davor steht eine if Abfrage. Daraus kannman entnehmen, daß die Funktion isset() als Ergebnisentweder true oder false an die ifAbfrage zurückliefert. Der Parameter, der ihr dabei übergebenwird, ist eine Stringvariable. Ist der String leer, so wirdfalse zurückgegeben, falls der String gesetzt ist,wird true zurückgegeben. Allgemein kann man alsodie 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 https://www.php.net/manual/ref.mysql.php, 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: https://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: https://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....
|