Funktionen
Funktionen definiert man in PHP Javascript-ähnlich: Man gebe das
Schlüsselwort function an, den Funktionsnamen und die Parameter,
Anfang und Ende der Funktion werden wie üblich mit den geschweiften
Klammern { und } bezeichnet,
Rückgabewerte mit return zurückgeliefert.
<?php
echo "2 mal 2 ist ".ergebnis(2);
function ergebnis($zahl)
{
$res=$zahl*$zahl;
return $res;
}
?>
Globale, lokale Variablen
Variablen sind in PHP grundsätzlich, Gott sei dank, lokal
(nicht wie in Perl!). Will man
anderswo verwendete Variablen "importieren" schreibt man vor der
Verwendung global <Variablenname>;, examplew.
<?php
echo "2 mal 2 ist ".ergebnis(2);
$res="gleich ";
function ergebnis($zahl)
{
global $res;
$res=$res.$zahl*$zahl;
return $res;
}
?>
Bibliotheken
Dateien, die nur PHP-Funktionen enthalten, werden mit require
eingebunden. Anders als in vielen anderen Sprachen gibt es
zusätzlich eine Include-Funktion (include "xyz.php";) wobei die
mit include eingebundenen Dateien zuerst ausgewertet und dann eingebunden
werden. Require arbeitet also schneller. (Um die Verwirrung perfekt zu
machen tut require das, was in C++ die Direktive #include tut, ein
PHP-ähnliches Include ist im C-Standard nicht vorgesehen weil C-Programme
nicht interpretiert, sondern kompiliert werden).
require "dbconnect.phtml";
connecttomydatabase();
Sicherheitshinweis: Sollten Sie die Dateien, die Sie mit
require einbinden, nicht .phtml oder .php benannt werden
(wie sie Ihre PHP-Dateien bennennen), und wenn diese (z.b. als
.inc Datei) nicht vom Webserver ausgeführt, sondern nur angezeigt
werden, kann Ihnen ein fremder in den Quelltext Ihrer Bibliotheken
spicken. Bei einer beliebten Anwendung von Bibliotheken, der
Verwaltung von Datenbankzugriffen kommt so ein Angreifer an
Benutzernamen und Passwort Ihrer Datenbank und kann diese von außen
manipulieren.
Fehler in Bibliotheken deutlich machen
Sollte es möglich sein (und eigentlich ist das immer möglich),
Fehler beim Aufruf von Bibliotheksfunktionen zu machen, zum Beispiel indem
falsche Argumente übergeben werden, sollten Sie das innerhalb Ihrer
Bibliothek mit
trigger_error
bemängeln. Im Gegensatz zum DIE-Statement hat das den Vorteil, dass
die genaue Zeile des Fehlers, eventuell sogar mit einem
backtrace,
angegeben wird, und die Fehlerbehandlung darauf reagieren kann - bei
einem eigenen
Error-Handler zum
Beispiel mit einer Mail an den Entwickler.