mySQL-Zugriff
Neben den bereits vordefinierten Funktionen kann der Etwickler beliebige eigene Funktionen schreiben. Jede Funktion hat einen Namen, sowie (optional) eine Parameterliste und einen Rückgabewert:
...code...
return ($status=="besoffen") ? true : false;
}
Es ist auch möglich, Vorgabewerte für Parameter zu vergeben, z.B. function ZeichneLinie($laenge, $farbe="rot) {}. Über die Funktionen func_num_args() und func_get_args() können Funktion sogar beliebig viele Parameter übergeben bekommen, ohne dies vor explizit definieren zu müssen.
Alle in einer Funktion verwendeten Variablen sind lokal, d.h. sie sind ausserhalb der Funktion nicht bekannt. Das gilt auch für die Parameter: alle übergebenen Werte bleiben ausserhalb unverändert - auch dann, wenn sie innerhalb der Funktion bearbeitet werden. Diese Art der Übergabe wird auch als "ByValue" bezeichnet. Soll ein Parameter jedoch tatsächlich als Verweis behandelt werden, muss ihm in der Parameterliste eine & (kaufmännisches "und") vorangestellt werden. Man spricht dann von einer Übergabe "ByReference".
Um innerhalb einer Funktion auf "äussere" Variablen zugreifen zu können, müssen sie über das Wort global erreichbar gemacht werden. Alternativ kann auch das spezielle PHP-Array $GLOBALS[] verwendet werden. Dieses assoziative Array ermöglicht den Zugriff auf alle globalen Variablen, indem man ihren Namen als Schlüsel verwendet.
Funktionen sollten häufig eingesetzt werden, frei nach dem Motto: "Alles was mehr als einmal aufgerufen wird, gehört in eine Funktion.". Dadurch lässt sich mittels Kapselung schlankerer Code schreiben. Oft benötigte Funktionen werden in einem separaten Script zusammengefasst und - falls benötigt - eingebunden.
Funktionen können sich natürlich auch slebst aufrufen, so dass rekursive Operationen möglich werden - wie beispielsweise die Darstellung eines binären Baumes oder dem Auslesen einer Verzeichnisstruktur.
CALLBACK-Funktionen
Obwohl Sie als "besonders" gelten, unterscheiden sich CALLBACK-Funktionen um keinen Deut von "normalen" PHP-Funktionen. Einige PHP-Sprachkonstrukte, wie z.B. array_filter() benötigt eine selbstgeschriebenen Funktion, um seine Aufgaben erfüllen zu können. Diese wird wie geahbt erstellt und per Name übergeben. Eine solche CALLBACK-Funktion muss auf jeden Fall einen Rückgabewertz besitzen; in der Regel werdne TRUE/FALSE-Konstruktionen eingesetzt.